Сообщение об ошибке связано с тем, что контекст EF не может выполнять более одной операции одновременно.
Насколько я понимаю, если вы находитесь на странице, то у вас есть константаподключение к файлу «Сервис» через соединение SingalR.
Если ваша страница выполняет несколько вызовов Сервиса, возможно, вызывается Контекст для выполнения операции до завершения предыдущегоone.
Вместо того, чтобы иметь один экземпляр Context для срока службы Сервиса, я создал один экземпляр для каждого вызова. Кажется, это смягчает эту проблему, но пока я не уверен, является ли это «лучшей практикой».
Так, например:
public class MyService
{
private MyContext Context => new MyContext(new DbContextOptions<MyContext>()));
private async Task DoSomething()
{
await using var context = this.Context; //New context for the lifetime of this method
var r = await context.Something
.Where(d => d....)
.AsNoTracking()
.FirstOrDefaultAsync()
.ConfigureAwait(false);
// context gets disposed of
// Other code
}
private async Task DoSomethingElse()
{
await using var context = this.Context; //New context for the lifetime of this method
var r = await context.Something
.Where(d => d....)
.AsNoTracking()
.FirstOrDefaultAsync()
.ConfigureAwait(false);
// context gets disposed of
// Other code
}
}