Closed umutluoglu closed 3 years ago
Umut hocam oncelikle bu bir cache problemi gibi gelmiyor bana. DBContext instance lari beklenen sekilde Dispose edilmiyor bence. Bunu AddDbContext yapmasi lazim aslinda, tam olarak neden bu davranis gerceklesiyor ben de net degilim ancak 1-2 onerim var.
Merhaba acaba cache sorunu ile alakalı bir gelişme varmı ?
@yusufyilmazfr Autofac'i sen eklemiştin sanırım. Konunun onunla bir ilgisi var mı kontrol edebilir misin?
@mustafa-korkmaz Söylediklerinle ilgili olabilir, sorunu cache sorunu olarak mı anlandırmalıyız ondan emin değiliz ama sorun değişen kaydın DBContext tarafında güncellenmemesi ve eski haliyle çalışmaya devam etmesi. Kalıcı ve doğru bir çözüm her türlü işimizi görür. Yusuf yazdıklarını değerlendirir en kısa zamanda.
@ouzdev Hatırlatma için teşekkürler.
Ben bir PoC calismasi yaparim bu issue ile ilgili ancak oncesinde #26 tamamlanmasi iyi olur diye dusunuyorum, zira rework cikar.
@mustafa-korkmaz https://github.com/devnotcom/devnot-mentor-back-end/pull/26 PR'ı merge ettim, şu an .NET 5' yükseldi.
Evet .NET içerisinde built in gelen DI mekanizması var, bizim orada Autofac kullanma sebebimiz Interceptor özelliğini kullanarak AOP'tan faydalanmaktı. Metot içerisinde try-catch, transaction, log kodları derken bayağı kalabalık hale geliyordu bundan ötürü kullandık.
Yukarıdaki maddeleri de tekrar göz önüne alıyorum, inceleyeceğim.
Autofac paketlerini sildim ve sorun duzeldi. Teyit edebilirseniz cok iyi olur, ilgili branch su an burada PR hala olusturamadim cunku sildigim paketlerin implemente edilmis ozelliklerini eklemem gerekiyor. Asagida nasil yapacagimdan bahsetmeye calistim.
@mustafa-korkmaz emeğinize ve vaktinize sağlık. 🖖
Exception handling kısımlarını dediğiniz gibi yapabiliriz, basit de olur uygulaması. Unit of work kısmında da farklı entity üzerindeki işlemler için kullanmak istedik. Amacımız burada her işlem için bir transaction scope açmak değildi.
Autofac bağımlılığı kaldırılabilir, kaldırdığımız zaman bir transaction kısmına özen göstermek gerekecek birkaç metot içerisinde diğer işlemlerin düzenlenmesi çok da zor değil.
Kaldırılabilir geliyor bana, siz ne düşünüyorsunuz acaba? @umutluoglu @oguzkurtcuoglu
Tekrardan elinize sağlık. 🖖
https://github.com/devnotcom/devnot-mentor-back-end/pull/31 PR'ında @mustafa-korkmaz tarafından çözüldü. 🚀
EF üzerinden yapılan bir insert/update işlemi sonrasında, eğer kayıt database tarafında manuel vb. bir yolla değişirse EF kaydın kendi işlem yaptığı son halini tutuyor ve select yapılınca güncel halini getirmiyor. Sorunu araştırdık biraz, DI lifetime ile çözülebilir diye düşündük ama bu yöndeki çözümler bu problemi çözmüyor. Tüm querylerin using içinde context objesi açılarak çözülebildiğini önermişler bir kaynakta.
Bu konuda şöyle iki kaynak var. Çözüm için sağlıklı bir yöntem bulup uygulamamız gerekecek. Benzer problemi farklı bir yoldan çözdüyseniz çözüm önerilerinizi de yazabilirsiniz, tartışabiliriz. https://stackoverflow.com/questions/7647912/why-re-initiate-the-dbcontext-when-using-the-entity-framework https://stackoverflow.com/questions/46205114/how-to-refresh-an-entity-framework-core-dbcontext/51290890