Oldukça karmaşık bir problemim var. ASP.NET MVC 5 projemde FluentValidation.MVC kullanıyorum. İçinde, kullanıcının e-posta adresinin çoğaltılmamış olup olmadığını kontrol etmek için bir havuz deseni kullanırım. Sorun gerçekten depo modeli değil;Basit Enjektör “DbContext atıldığı için işlem tamamlanamaz” MVC doğrulaması sırasında
public class SomeRepository
{
//IEFContext is something I modified the T4 template to generate
public SomeRepository(IEFContext context)
{
_context = context;
}
}
uygulama bu yaklaşımı kullanır ve o inşaat büyük: Bu depo çalışma zamanında yapıcı enjekte bir varlık Framework bağlam kullandığı bu. SimpleInjector, Per ASP.NET web isteğini (HttpContext.Items'in etrafına sarılır) kullanmak için kapsam verilen EF bağlamımı genişletir.
Dim httpLifecycle = New SimpleInjector.Integration.Web.WebRequestLifestyle(True)
container.Register(of IEFContext, EFContext)(httpLifecycle)
Buradaki uygulama ile ilgili herhangi bir sorun yok, yalnızca doğrulama. Sunucu işlem sonrası işlemi aldığında, "Hata, DbContext imha edildiğinden işlem tamamlanamıyor" şeklindedir. Görünüşe göre, herhangi bir EF ile ilgili kodu, her web isteği temelinde bir EF bağlamı kullanan bir FluentValidation özniteliğinde kullanamıyorum. does doğrulama özelliği hakkında özel bir şey,: HttpContext.Items
saklanan beri
public class Val : AbstractValidator<Entity>
{
public Val()
{
_repos = Container.GetInstance<ISomeRepos>();
RuleFor(i => i.Email).Must((o, v) =>
{
_repos.HasDistinctEmail(o.ID, v);
}
}
}
bağlam önceki istekle ölmeliydim. Ne olduğuna dair bir fikrin var mı? Doğru olarak WebRequestLifecycle
'u ayarlayarak biliyorum, EF içeriğinin istekte bulunmasına neden oluyorum. Bunun uygun olacağını düşünürdüm.
olduğunu gösterir! Teşekkürler. –