2011-09-06 136 views
12

我正在使用ADO .NET实体框架从数据库中导入模型。我的数据库中的表有一堆外键,所有外键都有抽象名称,例如FKDevice132610使用实体框架导航属性的有意义名称

当我将表格导入到我的模型中时,它会为每个外键引入导航属性,但是会根据它们链接的表名称导入属性。如果某个表中有多个外键,则在结尾添加一个数字。

Ef model

在这种情况下是Devices1和ParentDevices是Devices2 ChildDevices。有没有一种方法可以将这些信息输入到我的外键中(比如使用描述或名称),以便实体框架为我的导航属性导入有意义的名称?

回答

5

据我所知目前没有办法做到这一点。这是当前设计师的工作原理。当你将这些属性重命名为正确的名称更新数据库模型时,更有甚者会覆盖你的更改。导航属性命名的

改善是通过此工作项跟踪 - http://entityframework.codeplex.com/workitem/125

+3

这是蹩脚的......愚蠢的英孚:( – link664

+3

在这种情况下,它不是EF的失败,这是设计师的失败 - 你可以使用没有设计师的EF,或者使用代码优先的方法,或者如果你想从EF获得最好的手动编写XML映射。 –

0

想知道是否在“modelBuilder.Conventions.Remove”上进行搜索会引导您找到解决方案。 我希望我可以更多的帮助,但我只是开始探索EF。当我有多个字段指向相同的ID时,会出现类似的情况......我不记得周围的工作是什么。

+0

模型构建器和设计器没有任何共同之处。这两个是完全不同场景中使用的功能。 –

0

四年后...
直到EF团队解决了this issue,一个可能的解决方法可能是使用外部工具来分析.edmx文件并用更有意义的导航名称替换所有以 <NavigationProperty Name=开头的文本。
作为XML,非常容易解析和查找多样性,FK名称等属性。

相关问题