2012-09-17 49 views
4

我有以下查詢:EF代碼優先 - 獲取DynamicProxies而不是對象。爲什麼?

using (var forumsDb = new ForumsDb()) 
{ 
    forumsDb.Configuration.LazyLoadingEnabled = false; 
    var categoryList = forumsDb.Categories.Select(c => c).ToList(); 
    /***some code here***/ 
} 

現在,categoryList包含4項(我有4個類別的數據庫),但所有的人都dynamicproxies型的,而不是(如我所期望的)Category

我在做什麼錯了?

+1

是參考(多個)標記爲虛擬? – DarthVader

回答

5

你沒有做錯什麼。 EF將您的實體包裝在版本跟蹤代理中,以便它可以檢測對對象的更改並支持延遲加載。

如果要刪除的代理人,可以從上下文拆卸對象,也可以通過指定DbContext.Configuration.ProxyCreationEnabled假關閉版本共跟蹤

+0

作品。謝謝。 – ojek

1

動態代理會自動創建用於處理更改跟蹤的對象的包裝,以確保在運行SaveChanges時保存正確的對象。

從您的對象繼承(在你的情況下Category),並可以用作相應的對象。