2013-02-06 51 views
3

的多個實例被引用。實體對象不能由我使用EF作爲ORM IEntityChangeTracker

我處置objectContext在每次請求。

我保存在高速緩存層的實體,因爲我的服務得到大量的流量。

我有時會得到錯誤objectContext already disposed一些實體,我從緩存中得到。

我加入這個代碼元素從緩存

if (maMDBEntities.Entry(group).State == EntityState.Detached) 
{ 
    maMDBEntities.Groups.Attach(group); 
} 

被retrived說,但現在我有時會收到此錯誤:

An entity object cannot be referenced by multiple instances of IEntityChangeTracker.

使用Attach()從第一位置不正確的解決辦法是?

回答

4

當我們告訴你在你的其他問題(will EF::attach(entity) will solve objectContext is already desposed?),你必須將其連接到另一個上下文之前卸下實體!

如果maMDBEntities是一個新的上下文(不是加載數據的那個上下文),那麼EntityState不會從這個上下文的視點「附加」。所以你的支票是不夠的。

This maMDBEntities.Entry(group).State == EntityState.Detached will always對於沒有加載實體的Context而言是正確的。

+0

爲什麼是我的檢查還不夠嗎? –

+0

因爲:'一個實體對象不能被IEntityChangeTracker的多個實例引用。'你在那裏沒有乾淨的工作。分離它,你很好。 – TGlatzer

+0

所以我的檢查毫無意義。我懂了。所以總結一下我需要做的事情:1)EnableProxy = false 2)通過使用'Include()'強制每個實體引用強制加載加載3)分離每個實體引用?我錯過了什麼或是任何步驟redudant? –

相關問題