2016-03-21 7 views
0

atar UnitOfWork Kalıbı yönergeleri ve EntityFramework ile bir. Net web uygulaması üzerinde çalışıyorum.Context.ChangeTracker.Entries() bir InvalidOperationException

Context.ChangeTracker.Entries() yöntemi bir InvalidOperatioException atıyor.

İleti: "Bir varlık nesnesi, birden çok IEntityChangeTracker örneği tarafından başvurulamaz."

Kod çok büyük ve birden fazla katmanı içeriyor, dolayısıyla kodu buraya yapıştıramazsınız.

UnitOfWork Kalıbı'nı kullandığım için, yalnızca bağlamın tek bir örneğinde çalışıyorum eminim. Bu durumda, bu hatayı alıyoruz ve hangi sorunun bu soruna neden olduğunu anlayabileceğim bir yol var mı?

+0

* İçeriğin yalnızca tek bir örneğinde çalıştığımdan çok eminim * iyi, izleyicileri değiştirmek için hiçbir zaman bir bağlam görmedim ... –

cevap

1

Bir bağımlılık enjektörü kullanıyorsanız, konfigürasyonunuzda DI kapsayıcınızdan veya fabrikanızdan istek başına tek bir örnek oluşturmasını isteyin, böylece tek bir DbContext örneğinin oluşturulduğundan emin olun.

+0

İş birimini hizmete aktarıyorum ve hizmet unitOfWork içinde mevcut bağlamda çalışır ve aynı unitOfWork sonraki katmanlara/yöntemlere geçirilir. – DivideByzero

+0

Peki, varlık çerçevesi dbcontext örneklerini oluşturmaktan sorumlu nedir? Açık bir şekilde, hata mesajından, bir başka kodun, büyük bir kod tabanına sahip olduğunuzu bilmediğiniz bazı yerlere yaratılmış olması ve bu yüzden, eğer bir tane yoksa, bir bağımlılık enjektörüne ihtiyaç duymanızın nedeni budur. –

İlgili konular