2009-11-28 23 views
1

我是印象Entity Framework v4 - POCO與僅限於Code-Only有什麼區別?

  • EF與POCO下:讓你自己的POCO的映射到實體模型上(的.edmx)。
  • EF僅限代碼: edmx /模型設計器(即CSDL/SSDL/MSL(統稱爲EDMX)元數據)。仍POCO的但映射,關係,導航等全部手動編碼(因此僅限代碼,說明)。

如果對這兩個概念的描述(或多或少)是正確的,那麼爲什麼有人該用POCO做一個僅代碼而不是EF?

兩人都在做POCO的,但第二個人有額外的負擔,還必須手動做映射嗎?如果你想手工編寫的映射,而無需通過XML苦幹

回答

3
  1. 代碼僅是偉大的。 EDMX設計人員在50個左右的模型後也變得笨拙,這只是一個負擔。

當您的映射XML中出現問題時,它真的是一個PITA,可以在xml中進行挖掘以進行所需的修復。如果您在某些情況下開始手動編輯xml,設計師也會中斷。

現在我不知道細節,但EF1中的設計師並不支持所有可用的映射選項。 EF4設計師有一些改進(單向關係浮現在腦海中),但我不確定它是否具有手動映射的功能奇偶性。

  1. 是的。
3

我會增加jfar的答案的唯一的事情就是與代碼只有你沒有創建映射。

大部分時間都可以按照慣例推斷映射。

+0

你能舉個例子嗎? – 2009-11-29 22:23:57

+1

查看blogs.msdn.com/adonet上的Code-Only步驟 – 2009-11-30 02:42:17

0

我不認爲Code-Only現在允許您預生成視圖,因此可能會有性能成本。不過,這可能會在發佈前發生變化。

+0

您可以隨時提取EDMX,並在您準備部署等時預先生成視圖。 – 2009-11-30 21:55:13

0

還沒有提到的其他東西是,當使用Code Only時,您可以完全編譯時檢查您的語法。如果你在EDMX中使用可視化設計器,你會得到一些編譯時檢查,但它是有限的。對於較大的模型,EDMX變得非常不靈活,手動編寫CSDL,SSDL和MSL是用XML映射管理極大型模型的唯一體面的方式。如果您手動管理映射,則無法進行編譯時檢查。

使用Code Only,即使您有數百或數千個需要使用的實體,您也可以使用完整的編譯時間檢查任何大小的模型。它還會導致更少的「混亂」,因爲最終產品是所有編譯的程序集,而不是程序集和各種xml文件的混合。

1

有關視圖預生成的觀點很重要。我還沒有聽說過微軟有意提供僅用於代碼的前期產品。如果有人知道不同請張貼。

我已經使用代碼爲400表作爲調查的一部分,是否與EF4或NHibernate和視圖生成有80秒的初始延遲 - 完全一樣,當使用設計器,但與設計師視圖可能會延遲到10秒。如果你不喜歡分割你的模型,並且你有超過75個表格不會去代碼。

相關問題