Press ESC to close

Entity Framework Core, Cannot access a disposed context instance hatası

Selam arkadaşlar, aldığımız hata şu şekilde.

EntityFramework ile veritabanına bir kayıt eklemeye çalıştığım sırada bu hatayı alıyorum.

Cannot access a disposed context instance. A common cause of this error is disposing a context instance that was resolved from dependency injection and then later trying to use the same context instance elsewhere in your application. This may occur if you are calling 'Dispose' on the context instance, or wrapping it in a using statement. If you are using dependency injection, you should let the dependency injection container take care of disposing context instances.
Object name: 'InternetBranchDbContext'.

Bu hatanın çok yaygın birkaç sebebi vardır.

1 – Projenizin herhangi bir yerinde async void ifadesi kullanıyor olabilirsiniz. Projenizin tamamında bu ifadeyi async Task olarak değiştirin.

2 – Veritabanınınız harhangi bir using içerisinde çağırıyor olabilirsiniz. Eğer dependency injection kullanıyorsanız contextiniz için using kullanmamanız ve bu süreçleri IOC Containerınıza bırakmanız gerekiyor. Örnek hatalı kullanım;

public User GetUser(){
    using (var myContext = _context){
      //bla bla
    }
}

3 – Db Contextinizden bağımsız olarak üst satırlarda dosya yükleme, resim boyutlama vb. işlemler için using scope oluşturmuş olabilirsiniz. Böyle bir kullanım söz konusu ise yine aynı hatayı alırsınız.

Hoşçakalın.

Kaynak:
https://stackoverflow.com/questions/38704025/cannot-access-a-disposed-object-in-asp-net-core-when-injecting-dbcontext
https://stackoverflow.com/questions/55543595/cannot-access-a-disposed-object-a-common-cause-of-this-error-is-disposing-a-con

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir