2012-02-12 71 views
3

我想了解.NET中的poco生成器應該做什麼。在我看來,他們應該是代碼生成工具,它允許我從我的edmx文件中選擇我想創建POCO的實體,並根據表的字段生成類,同時允許我自定義生成的poco名稱,使它不同從我的edmx designer.cs文件中生成的類名稱。比如說:我有一個名爲Customer的表,它在edmx文件中被命名爲Customers。現在,poco生成工具應該允許我創建一個名爲say,BusinessCustomers的類。然而,儘管他們在生成類時沒有允許我自定義生成的類名,但我注意到當從this example生成這樣的pocos時,它們傾向於仍然是代碼生成工具所擁有的類。生成的poco類是一個名爲Customers的分部類,它基本上是edmx類的擴展。我不能有選擇地選擇我想要生成pocos的實體。因此,如果我對生成的類進行了更改,那麼隨時將新表添加到edmx文件並希望使用此工具創建新的pocos時,它們將會丟失。我當然可以將生成的類複製到另一個項目並從那裏使用它們,但我不確定這是否是正確的方法。 在我上面的示例中,生成的poco類是一個名爲Customers的分部類,具有虛擬屬性,表中的每個字段都有一個。 edmx designer.cs被擦乾淨。我仍將使用我的代碼中由該工具生成的類。如果我想要一個單獨的poco類,我仍然必須自己編寫它...難道不是poco生成器應該爲我創建一組新的類,使edmx類完好無損嗎?瞭解POCO生成器

在最低限度,我要的是生成對我來說類和一旦其與產生它做不會再去碰它的工具。如果我已經正確理解了ADO.NET C#POCO實體生成器,它不會那樣做。有沒有更好的工具,或者我應該堅持爲我的需求編寫我的poco課程?你怎麼看?

對不起,如果我的問題有點混亂;我寫這篇文章的時候對這個主題的理解有限,也許不正確。感謝您的時間...

回答

1

POCO類發電機是有幫助你通過改變產生他們T4模板自定義生成過程,並且還從EDMX含項目除了打破它們。 對於說測試來說,這可能非常有幫助,在這種情況下,您可以用自定義生成器或其他一些數據饋送結構來替換EDMX,這些數據饋送結構會填充生成的類,這些類可以與edmx本身完全不同的項目中。

至於定製所有你需要做的就是聲明這些類的部分(不知道這是默認的,但可以很容易改變,在T4模板)。所以你要做的是另外一個文件代表保存自定義代碼的類的一部分。這樣,您可以在重新生成類時自定義您的類而不會丟失更改。

只要回答總之,你應該用POCO發電機堅持,因爲它簡化了映射數據庫表上課的全過程。

+0

順便說一句,如果你要編輯T4模板,如果你之前沒有做過,你可能會發現這個任務有點嘲諷。有一些不錯的工作室插件可以幫助用智能感知和示例編寫它們,所以請查看它們。 – masimplo 2012-02-12 22:12:48

+0

生成的poco類是一個名爲Customers的分部類,具有虛擬屬性,表中的每個字段都有一個。 edmx designer.cs被擦乾淨。我仍將使用我的代碼中由該工具生成的類。如果我想要一個單獨的poco類,我仍然必須自己編寫它...難道不是poco生成器應該爲我創建一組新的類,使edmx類完好無損嗎? – user20358 2012-02-12 22:16:01

+0

不,POCO生成器應該將代碼從edmx文件中分解出來,然後放入單獨的類中,您可以1。通過使用T4進行自定義,2.將它們放在一個不同的項目中,這樣實際上使它們成爲你的類而不是EF4類,並按照你認爲合適的方式使用它們,即使你決定轉儲EF,3.擴展它們或者在不同的你認爲合適的文件。 – masimplo 2012-02-13 22:38:44