2012-07-06 65 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文件中的所有元数据,非常简单,效果很好。