2012-07-06 129 views
2

我的問題是我必須從現有的數據庫中導入我的實體。 DB具有架構,並且一些表在不同的架構中共享相同的名稱。當這生成模型時,我得到MyTable和MyTable1(如果這就是他們所稱的)。如何用dbSchema實現類名前綴實體框架

我想要做的是將它們命名爲MyTable,如果它使用dbo模式,但是如果它是任何其他模式,則使用模式名稱作爲前綴eg。 MySchema_MyTable。

我知道我可以通過在設計器中更改名稱來手動執行此操作,但這可能不僅僅由我自己完成,更多的表和模式將添加到此數據庫中。所以我想強制執行這個命名約定。

我在想最好的方法是使用t4模板。我可以很容易地改變它來添加一個前綴,這個工作,但我不知道如何獲得該特定實體的數據庫模式名稱。 T4模板不帶智能感知。

我將不勝感激您的建議。

謝謝,

+0

你的問題不清楚給我。你是否想編寫一個T4模板來遍歷數據庫中的所有表,確定它們的「完全作用域」名稱,包括模式名稱,然後使用這些完全作用域名稱生成代碼?另外,你使用的是什麼數據庫? – 2012-07-06 19:22:10

+0

是的,簡而言之,我希望它遍歷數據庫中的所有表並創建一個表示每個表的類。這些類的名稱是「<數據庫模式名稱> _

」。 我希望這是可能的,實體框架生成的edmx文件包含模式名稱和表名稱。謝謝 – user15064812012-07-08 16:42:17

+0

看看[T4模板生成枚舉](http://stackoverflow.com/a/4480173/1380680)和[此博客文章](http://blog.sqlauthority.com/2009/06/17/SQL服務器列表,架構名稱和表名換數據庫/)。如果將兩者結合起來,那麼在使用SQL Server的情況下,您應該能夠獲得所需的內容,或者針對特定的數據庫調整它。這些幫助有用? – 2012-07-08 18:51:38

回答

0

您可以使用TiraggoEdmx獲取數據庫信息。請參閱http://brewdawg.github.io/Tiraggo.Edmx/,您可以通過Visual Studio中的NuGet安裝它,並且它提供Microsoft從您隱藏的EDMX文件中的所有元數據,非常簡單,效果很好。