2013-01-14 105 views
0

我嘗試添加設置詞典EF實體EF實體如在下面的代碼:無法添加設置到字典

private static readonly Dictionary<string, ObjectSet<EntityObject>> Gateways 
    = new Dictionary<string, ObjectSet<EntityObject>> 
{ 
    {"PlanSection", ModelEntities.PlanSection} 
}; 

但是編譯器說:

cannot convert from 'System.Data.Objects.ObjectSet<MathApplication.Models.PlanSection>' to 'System.Data.Objects.ObjectSet<System.Data.Objects.DataClasses.EntityObject>' 

PlanSection是類從數據庫表映射。我的代碼有什麼問題?

編輯 這裏是PlanSection定義:

public partial class PlanSection : EntityObject 

回答

1

你真的需要Dictionary來包含一個ObjectSet嗎?或者它足夠擁有那些實體列表。

如果實體列表足夠,那麼爲什麼不只是將該成員設置爲IEnumerable,然後將其添加爲值ModelEntities.PlanSection.LoadAll()或其他東西。

如果您的意圖是將所有對象集合在該字典中,那麼請嘗試創建一個將由所有實體實現的接口,然後將該字典的Type Type值設置爲IEnumerable之類的值。

或者,另一種方法是嘗試創建一個具有動態類型作爲值的字典,然後編譯器會讓你一個人想我,但在使用字典內的值時會遇到其他問題因爲你必須施展它們才能在設計時訪問屬性。

+0

所有該類都由'EntityFramework'生成。我可以編輯它們,但它們將在下一次模型更新時重新生成 – skayred

+0

它們被定義爲部分類,所以在該項目中,您可以創建具有相同名稱和部分關鍵字的類並實現其他邏輯(如實現接口)以及那些類不會被覆蓋。 – dutzu

1

你有兩個不同的對象

MathApplication.Models.PlanSection 

System.Data.Objects.DataClasses.EntityObject 

檢查你的代碼,並使用適當的單個對象上雙方。

+0

我已經添加了一些代碼,請參閱編輯 – skayred