【问题标题】:Entity Framework use foreign key names for navigation properties实体框架为导航属性使用外键名称
【发布时间】:2017-10-30 14:08:56
【问题描述】:

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

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

谢谢!

【问题讨论】:

    标签: c# entity-framework-6


    【解决方案1】:

    我知道有一些(棘手的)方法可以做到这一点...掌握驱动 EDMX 创建的模板。也许有人会指出你。但也要记住第 3 方工具。 LLBLGen Pro 可以轻松做到这一点。以下是相关文档:https://www.llblgen.com/Documentation/5.3/Designer/Functionality%20Reference/ProjectSettings.htm#name-construction-name-patterns

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 谢谢@ErikEJ,DB 有什么要先做的吗?反正我会看看那些,里面可能有一些线索。
      • 这是数据库优先(但没有 EDMX)
      • 糟糕意味着 DB 首先使用 EDMX。
      【解决方案3】:

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

      【讨论】:

      • 这里的问题是文件是动态的,所以它每次都会重新生成......我有很多关于这个问题的属性
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-29
      • 1970-01-01
      相关资源
      最近更新 更多