使用Entity Framework时为导航属性命名有意义的名称

12

我正在使用ADO .NET实体框架从数据库中导入我的模型。 我的数据库中有一个表,其中包含许多具有抽象名称(例如FKDevice132610)的外键。

当我将该表导入到我的模型中时,它会为每个外键带来导航属性,但是它们的名称基于它们连接到的表的名称导入。 如果有超过一个外键指向特定的表,则在末尾添加一个数字。

Ef model

在此示例中,Devices1是ParentDevices,而Devices2是ChildDevices。 有没有办法在我的外键中输入这些信息(比如使用描述或名称),以便实体框架会为我的导航属性导入有意义的名称?

3个回答

6
据我所知,目前还没有办法做到这一点。这是当前设计师的工作方式。更糟糕的是,当您将这些属性重命名为正确的名称时,从数据库更新模型有时会覆盖您的更改。
导航属性命名的改进由此工作项跟踪 - http://entityframework.codeplex.com/workitem/125

5
在这种情况下,失败并不是Entity Framework(EF)本身的问题,而是设计师的问题。您可以通过使用Code First方法或手动编写XML映射来使用EF,而无需使用其设计工具。这样可以让您更好地利用EF的功能。 - Ladislav Mrnka

0

四年后...
在EF团队解决this issue之前,一个可能的解决方法是使用外部工具解析.edmx文件,并将所有以<NavigationProperty Name=开头的文本替换为更有意义的导航名称。
由于它是XML格式,因此非常容易解析和查找属性,例如多重性、FK名称等。


0

想知道在 "modelBuilder.Conventions.Remove" 上搜索是否会带你找到解决方案。 我希望我能提供更多帮助,但我刚开始探索 EF。当我有多个字段引用相同的 ID 时,遇到了类似的情况...而且我不记得解决方法是什么了。


1
模型构建器和设计师没有任何共同之处。这两个功能用于完全不同的场景。 - Ladislav Mrnka

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接