是dbContext(从ValidationContext中检索).GetService在Blazor服务器端应用程序)



是dbContext(从ValidationContext中检索)。GetService在Blazor服务器端应用程序)线程安全?

public class SomeAttribute : ValidationAttribute
{
protected override ValidationResult IsValid(object value, ValidationContext validationContext) {
...
using var dbContext = (AppDbContext)validationContext.GetService(typeof(AppDbContext));
...
}
}

我不相信有任何dbContext的实例化是线程安全的。如果需要异步,则应该实例化另一个实例。
这里你已经把它注入到一个属性中,所以你可能会问它是否会在每次被击中时都是一个新的?如果是这样,那么是的,除非你注射的方式不是这样。
如果你正在使用服务。AddDbContext或Services。AddDbContextFactory将是新的,因此异步命中属性将是好的,因为每个都将有一个新的上下文。

见:https://learn.microsoft.com/en-us/ef/core/dbcontext-configuration/

最新更新