Scoped Servisi Singleton'a Enjekte Etmek
Captive dependency: DbContext birden fazla istek yaşar

Captive dependency: uzun yaşayan nesne, kısa yaşayanı hapseder. DbContext istek bitince dispose edilir. Singleton onu alanda tutarsa ikinci istek ObjectDisposedException veya paylaşılan tracker üretir.
builder.Host.UseDefaultServiceProvider(o =>
{
o.ValidateScopes = true;
o.ValidateOnBuild = true;
});
Development'ta ValidateScopes bunu ayağa kalkarken patlatır. Production'da kapalı bırakmak, hatayı ilk yoğun günde aramak demek. Singleton gerekiyorsa IServiceScopeFactory ile kısa scope açılır, DbContext orada yaşar, kapanır.
Çoğu 'singleton olsun' isteği aslında stateless bir yardımcı. State yoksa static metot veya gerçekten stateless class. State varsa scoped kalır.
Yorumlar
Yorumlar (0)
Yorumlar üyelere açık. Üye ol · Giriş yap