使用实体框架的导航属性的有意义的名称
Posted
技术标签:
【中文标题】使用实体框架的导航属性的有意义的名称【英文标题】:Meaningful Names for Navigation Properties using Entity Framework 【发布时间】:2011-09-06 00:56:48 【问题描述】:我正在使用 ADO .NET Entity Framework 从数据库中导入我的模型。我的数据库中的一个表有一堆外键,都带有抽象名称,例如FKDevice132610
.
当我将表导入到我的模型中时,它会为每个外键引入导航属性,但是它们是使用基于它们链接到的表名称的名称导入的。如果某个表有多个外键,则在末尾附加一个数字。
在这种情况下,Devices1 是 ParentDevices,Devices2 是 ChildDevices。有没有办法可以将此信息输入到我的外键中(比如使用描述或名称),以便实体框架为我的导航属性导入有意义的名称?
【问题讨论】:
【参考方案1】:据我所知,目前没有办法做到这一点。这就是当前设计师的工作方式。更糟糕的是,当您将这些属性重命名为正确的名称时,从数据库更新模型有时会覆盖您的更改。
此工作项跟踪导航属性命名的改进 - http://entityframework.codeplex.com/workitem/125
【讨论】:
在这种情况下,它不是 EF 故障。这是设计器的失败 - 您可以通过使用代码优先方法或者如果您想通过手动编写 XML 映射从 EF 中获得最佳效果,则可以在没有设计器的情况下使用 EF。【参考方案2】:想知道搜索“modelBuilder.Conventions.Remove”是否会引导您找到解决方案。 我希望我能提供更多帮助,但我才刚刚开始探索 EF。当我有多个字段引用同一个 ID 时遇到了类似的情况......我不记得解决了什么问题。
【讨论】:
模型建造者和设计师没有共同点。这两个是在完全不同的场景中使用的功能。【参考方案3】:四年后...
在 EF 团队解决 this issue 之前,一种可能的解决方法是使用外部工具解析 .edmx
文件并替换所有以
<NavigationProperty Name=
通过更有意义的导航名称。
作为 XML,解析和查找多重性、FK 名称等属性非常容易。
【讨论】:
以上是关于使用实体框架的导航属性的有意义的名称的主要内容,如果未能解决你的问题,请参考以下文章