2010-09-06 49 views
2

有人可以請我確認/糾正我的理解,使用POCO的Entity Framework v4嗎?我對POCO's + Entity Framework v4的理解是否正確?

如果我要在我的EF4上下文中使用POCO,還需要在designer/.edmx上放置/創建ENTITIES嗎?是不是使用POCO的想法,所以我不需要使用那些「沉重的」實體?還是我仍然需要這些實體,只是在其他地方我實際上將數據從實體中移出,並進入我的POCO的......這是什麼被任何消費代碼使用?

回答

5

如果你想使用POCO你有三種選擇:

的第一選擇是創建EDMX模型。在EDMX中,您將關閉代碼生成功能,因此該模型不會爲您創建沉重的實體。比你將創建必須遵循這些約束你的POCO類:

  • 每個類都有模型
  • 每個班級都必須有參數的構造函數具有相同的名稱作爲實體。應該公開,但我認爲它也適用於保護。
  • 每個類必須具有與模型中名稱完全相同的所有屬性(包括導航屬性)。除導航集合外的所有屬性都必須具有getter和setter(至少受保護)。
  • 導航集合的屬性必須至少爲ICollection類型<T>並且您必須初始化它們(這就是爲什麼它們不需要setter的原因)。跟蹤EF初始化集合的代理時,情況並非如此。

第二種選擇與第一種選擇相同,但您並不自己創建POCO類。相反,您可以使用可下載到VS 2010的POCO模板。此模板使用.tt文件爲您生成POCO。

第三種選擇是使用Code First方法,在其中編寫POCO並在代碼中定義映射。要做到這一點,你需要EF 4.0 Feature CTP。我希望這是如何在沒有EDMX模型的情況下使用POCO的唯一方法。但目前只有CTP有很多限制。

+0

Danke。我害怕我仍然不得不讓這些血腥的實體仍然:( – 2010-09-06 13:52:33