2012-03-01 86 views
3

我正在使用數據庫第一種方法,使用實體框架,我剛剛閱讀了關於POCO In EF的這篇文章。現在:如何直接從數據庫生成POCO模板?數據庫優先+ EF + POCO; T4代碼生成?

namespace My.Domain 
{ 
    public class Entity 
    { 
     public virtual long EntityId { get; set; } 
     public virtual string Example { get; set; } 
     public virtual long NextId { get; set; } 
     public virtual bool Lame { get; set; } 
    } 
} 

其實我也很喜歡到能產生我手動生成同樣的東西,只需一個步驟:

  • 爲每個表添加ObjectSetObjectContext,每它是領域,財產獲得者和創造。
  • 創建POCO最好在另一個項目中創建POCO實體,將所有屬性映射包括關係,將屬性標記爲虛擬以啓用代理,顯然在我選擇的名稱空間中。

有沒有一種「簡單」的方式來完成這個使用T4模板,或者是否有一些其他工具可以做到這一點?也許某種Custom Tool而不是EF自帶的那種,但是這是以POCO爲導向的?

+0

您使用的是什麼版本的EF?如果EF4,那麼你將需要得到一個也有POCO T4的擴展。如果4.1+,那麼這大部分是內置的。 – 2012-03-01 02:52:41

+0

我相信'4.1',我可以在哪裏查看;這是如何「內置」的? – bevacqua 2012-03-01 02:56:39

+0

如果您想要控制生成的內容,請執行以下操作:http://stackoverflow.com/a/8107292/418488 – FuleSnabel 2012-03-01 12:03:30

回答

2

只要您使用EF 4.1,那麼生成的POCO對象就是「內置的」。請參考這篇文章:

http://blogs.msdn.com/b/adonet/archive/2011/03/15/ef-4-1-model-amp-database-first-walkthrough.aspx

這,只是捎帶到

http://blogs.msdn.com/b/adonet/archive/2010/01/25/walkthrough-poco-template-for-the-entity-framework.aspx

發現上了年紀,更囉嗦的方式第一種方法是比較建議的方法現在,但我想我也會給你老年人無論如何:)

希望,這符合您的需求:)。我不確定如何在指定的命名空間和項目中創建它。這聽起來更像Code First(你可能能夠完成並完美地連接到數據庫?),但是你也許可以彎曲生成項目到你的奇想。這應該是在正確的方向一推,雖然

0

創建POCO實體,preferrably在另一個項目中,所有的屬性映射,包括關係,與特性標記爲虛,使代理,顯然在命名空間我選擇。

實體框架默認模板不能放在單獨的程序集中,因爲它需要配置和EDMX文件。

有沒有一種「簡單」的方式來完成這個使用T4模板,還是有一些其他工具可以做到這一點?

是,實體接口生成

https://entityinterfacegenerator.codeplex.com

該項目包含一個可以生成接口,爲的DbContext類和實體類屬性定製的T4模板。