切断されたシナリオで作業していますが、オブジェクトコンテキストを破棄しても、アタッチされたエンティティが解放されないことに気付きました。その結果、これが原因で後続の操作が失敗することがよくあります。
したがって、これを解決するために、オブジェクトコンテキストが破棄されているときに、すべてを自分で切り離します。
public void Dispose()
{
// detaching is not really needed, because we have short living object contexts
var objectStateEntries =
_context.UnderlyingContext.ObjectStateManager.GetObjectStateEntries(EntityState.Unchanged);
objectStateEntries.ToList().ForEach(o => { if (o.Entity != null)
{
_context.UnderlyingContext.Detach(o.Entity);
}});
_context.Dispose();
_context = null;
}
ただし、オブジェクトグラフが完全に切り離されるという副作用がありますが、グラフを保持したいのです。
これに対する解決策が見つからないようですが、それができないのは本当ですか?