【问题标题】:Renaming navigation properties重命名导航属性
【发布时间】:2013-07-22 18:00:19
【问题描述】:

有时实体框架会生成糟糕的导航属性名称。使用数据库优先方法,解决此问题的最佳方法是什么?

我可以根据自己的喜好编辑 t4 模板,但是如何将这些修改后的名称绑定到实际关系?我应该只写一个脚本来修改 edmx 文件吗?显然,手工操作不是一种选择。

【问题讨论】:

  • EF5 中没有 edmx。你说的是 EF4 吗?
  • @sza,这很奇怪,它声称是参考属性中的版本 5。我实际做的是“ADO.NET 实体数据模型”。
  • 我认为这个线程对在 EF 5.x T4 模板中改变什么来实现这一点有更详细的解释。 stackoverflow.com/questions/12937193/…
  • 我正在使用 EF 版本 6,他们有什么可以解决这个问题的吗?每次在 DB First 项目中重新创建/重新加载 EDMX 文件时,我都会重命名导航属性。你可以分享你用来重命名属性的脚本吗?谢谢
  • 我为这个github.com/timabell/ef-edmx-nav-namer做了一个基本的.net控制台应用程序

标签: entity-framework-5 ef-database-first navigation-properties


【解决方案1】:

是的,你可以。在大多数情况下,您只需从 EF 模型设计器重命名 NavPr 并保存模型。然后 EF 在您的 DbContext.tt 实体类中重命名 NavPr,这不会导致任何问题。

如果您在配置名称方面遇到问题,请右键单击重命名的 NavPr 并选择属性。然后将其Association 属性更改为数据库中的实际关系。

如果您在此处看不到相对关系名称,请删除该实体以及与其有关系的所有其他实体,右键单击模型设计器并选择 Update model from database。然后,只需重命名那个丑陋的 NavPr 并保存模型。

【讨论】:

  • 我不想在模型设计器中这样做。通常有太多的桌子。此外,如果需要生成新模型,所有更改都将丢失。我想要的是一种告诉 EF 使用什么命名约定的方法。
  • 您可以通过在 DbContext 中覆盖 OnModelCreating 来删除 EF 的命名约定,并且通过这样做,您必须将所有关于命名属性、外键等的事情告诉 EF...!哪种方式更简单?!
  • OnModelCreating 仅适用于 Code First,不是吗?我需要使用 Database First 的解决方案。
  • 好吧,目前我已经编写了一个 Perl 脚本来修复我的 .edmx,所以我很好。我希望找到一个更优雅的解决方案......
  • @KarolisJuodelė 你应该分享你的发现!
猜你喜欢
  • 2014-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-25
相关资源
最近更新 更多