实体框架使用外键名称作为导航属性

时间:2017-10-24 07:50:06

标签: c# entity-framework-6

在EF 6中使用DB first方法使用外键名称生成实体(导航)属性名称而不是Entity1,Entity2等格式时,我们如何获取模板脚本?

这是一个问题的示例是,如果您的表具有createdby,updayedby等列,并且这些列具有用户表的外键,EF将使用外键的字母顺序生成表的属性实体,您最终将User,User1作为属性。当您稍后将新FK添加到用户表时,这会成为一个大问题,其名称会导致User1不再是updateby用户,因为新FK出现在之前生成的User1的更新后的FK之上!

谢谢!

3 个答案:

答案 0 :(得分:1)

我知道有一些(棘手的)方法可以做到这一点......亲自操作驱动EDMX创建的模板。也许有人能够指出你。但也请记住第三方工具。 LLBLGen Pro可以轻松完成此任务。以下是相关文档:https://www.llblgen.com/Documentation/5.3/Designer/Functionality%20Reference/ProjectSettings.htm#name-construction-name-patterns

答案 1 :(得分:1)

对于首先来自数据库的代码,您可以使用https://www.nuget.org/packages/EntityFramework.CodeTemplates.CSharp来添加用于项目的tt模板。

答案 2 :(得分:0)

您可以编辑生成的EDMX文件/图表,并将导航属性重命名为适合其角色的名称。因此,您可以简单地将其重命名为User1User2,而不是UpdatedByUserCreatedByUser