由於EF的更改跟蹤和延遲加載功能,我遇到了一個查詢問題。問題是,在得到查詢結果後,我使用AutoMapper將域對象映射到我的業務模型中,但由於上下文已經處理,它會一直拋出異常。ObjectContext實例已被處置,不能再用於需要連接的操作
對於需要連接的操作,ObjectContext實例已被處置,不能再使用 。
當我看着調試器中的結果集合時,我看到它是一個列表DynamicProxy
而不是實際的實體。我試圖停止更改跟蹤,但這並沒有幫助。這裏是我的代碼:
public List<ContentTypeColumn> GetContentTypeColumns(Int64 contentTypeId)
{
List<ContentTypeColumn> result = new List<ContentTypeColumn>();
using (SCGREDbContext context = new SCGREDbContext())
{
ContentType contentType = context.ContentTypes.Include("Parent").AsNoTracking().FirstOrDefault(x => x.Id.Equals(contentTypeId));
result.AddRange(contentType.ContentTypeColumns.ToList());
while (contentType.Parent != null)
{
result.AddRange(contentType.Parent.ContentTypeColumns.ToList());
contentType = contentType.Parent;
}
}
return result.ToList();
}
注意:如果你需要尋找到參與這項操作我的域模型,你可以參考this question.
延遲加載?這會造成這種情況。 –
我知道,我試圖在這種情況下避免延遲加載,但我找不到解決方法。有什麼建議麼? – Kassem
[如何解決錯誤ObjectContext實例已被處置,不能再用於需要連接的操作](https://stackoverflow.com/questions/18398356/how-to-solve-the- error-the-objectcontext-instance-has-been-dispos-and-can-no-l) –