【问题标题】:How fix the name for class not auto singularize如何修复类的名称而不是自动单数化
【发布时间】:2018-03-13 20:44:58
【问题描述】:

使用 EF 创建类我选择了singularize 选项。有些类是单数化的,而另一些则不是。

这项工作还可以:

products -> product
presentations -> presentation

但这两个不是:

price_sources -x-> price_source
user_types -x-> user_type

  • 如何修复未单数化的类名称?
  • 如何修正带下划线的类名?
  • 如何确保从 db 进行的下一次更新不会再次破坏名称?

【问题讨论】:

  • 只需在模型中自己重命名即可。如果您重命名,更新不会破坏它们。您甚至可以重命名所有列以遵循 c# 约定(PriceSourceID 等)。
  • @Evk “在模型中重命名它们”是什么意思?这些文件是自动生成的,更新将丢失任何更改
  • 我猜这是数据库优先而不是代码优先。
  • @phuzi 你是对的。数据库已经创建
  • 我的意思是在你的截图上的模型设计器中。在设计器中双击打开 edmx 文件并重命名。该文件不是自动生成的。不知道这里还能说什么。

标签: c# postgresql visual-studio entity-framework class


【解决方案1】:

手动方法:

在 edmx 窗口的空白处右击并选择Model Browser

在 edmx 文件的 Model Browser 中,您可以通过右键单击类名称并选择 Rename 来重命名 DBModel --> Entity Types 下的表的生成类名称。这不会破坏后续从数据库更新模型的代码。但如果你删除并重新添加同一个表,你将不得不重复上述步骤。

我执行这些步骤是为了避免 CA 警告在类/属性名称中使用下划线

【讨论】:

  • 我没有实体类型,我有 dbModel.tt 并且在“右键单击”类下没有重命名i.stack.imgur.com/eBfZA.png的选项
  • 我的意思是在模型浏览器而不是解决方案资源管理器中.. 更新了答案
【解决方案2】:

答案是带下划线的表格在 EM 中不能自动复数/单数化。

更多详情,请参见: https://blogs.msdn.microsoft.com/efdesign/2008/12/01/pluralization/

您必须明确配置表名。

您还可以使用自定义复数服务来编写自己的规则。

详情请看:Entity Framework EDMX - Entity Pluralization Fix

【讨论】:

  • 你如何明确地配置名称?每次从 db 更新模型时都必须这样做吗?
  • 糟糕,再看一遍。
猜你喜欢
  • 2021-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-16
相关资源
最近更新 更多