v2.5.2
Giriş yap

EF Core Mssql Asenkron işlemlerde hata alıyorum

admin
1,091 defa görüntülendi

EF Core Mssql Asenkron işlemlerde hata alıyorum

Herkese kolay gelsin.

A second operation was started on this context before a previous operation completed. This is usually caused by different threads concurrently using the same instance of DbContext. For more information on how to avoid threading issues with DbContext

Örnek olarak bir modeli veritabanına yazmak istediğimde foreach ile tek tek await kullanmama rağmen ikinci model'de bu hata alıyorum.

Ioc container olarak Autofac kullanıyorum.

internetteki çözümleri denedim yine aynı hatayı almaktayım.

services.AddDbContext<MyContext>(options =>
                options.UseSqlServer(configuration.GetConnectionString("DbContext")), ServiceLifetime.Transient);
services.AddTransient<DbContext, MyContext>();

örnek hata aldığım yapı bu şekilde:

 var entityList = await _service.getAll();
entityList.ForEach(async entity =>
{
    var resp=await _service.InsertAsync(entity);
});

Cevap yaz
Cevaplar (1)
admin
1138 gün önce

Autofac yapılandırması yanlış imiş. Single yerine InstancePerLifetimeScope(); yapınca sorun çözüldü. Foreach ile yapınca da yine bu hata gelmekte lakin select gibi insert olmayan sorgularda bu hata çıkmaz oldu. Autofac'ın proxyleri sanırım dbcontext nesnesini öldürmediği için bu sorun ortaya çıkıyor.