为啥实体框架要复数和大写实体类名?

Posted

技术标签:

【中文标题】为啥实体框架要复数和大写实体类名?【英文标题】:Why does entity framework pluralize and capitalize entity class names?为什么实体框架要复数和大写实体类名? 【发布时间】:2011-03-27 12:27:54 【问题描述】:

为什么实体框架默认将所有类名复数,首字母大写?这样做有什么好处?可能是个愚蠢的问题……但只是出于好奇?

【问题讨论】:

复数化可以关闭。这是默认设置,但您可以根据需要调整设置。 【参考方案1】:

.NET 样式指南规定所有类名都应采用 CamelCase。

我不知道复数,它不是复数单个实体对象,是吗?不过,对于集合来说是有意义的。

【讨论】:

【参考方案2】:

在.NET Design Guidelines for Developing Class Libraries 的Capitalization Conventions 部分中,它声明所有类名都应该是Pascal 大小写,它定义为:

"标识符中的第一个字母 和每个的第一个字母 随后的连接词是 大写。您可以使用帕斯卡案例 对于三个或更多的标识符 人物。例如:

背景色"

至于复数,我发现当您使用实体框架模型设计器的默认设置时,您会得到相反的结果。它将复数表名称转换为其单数等效项。例如,使用 Northwind 数据库并使用默认设置,我发现设计器会将 Products 表更改为名为 Product 的类,并将 Categories 表更改为名为 Category 的类。这是有道理的,因为对象的单个实例将是 Product 而不是 Products

如果你得到相反的效果,那么我很困惑。但是,请查看 Dan Rigsby 的这篇文章 - Entity Framework 4.0: Pluralization,它或许可以解释正在发生的事情。

【讨论】:

【参考方案3】:

你应该单数化一个类和复数化一个集合。例如,这是由 ef 完成单数化和复数化的地方

var 客户 = 新客户; //单一类 db.Customers.AddObject(客户); ObjectSEt 是复数形式

customer.Orders.Add(new Order);订单导航属性是复数形式。

要了解更多信息,您还可以阅读我书中的 7-6 食谱。

【讨论】:

以上是关于为啥实体框架要复数和大写实体类名?的主要内容,如果未能解决你的问题,请参考以下文章

abp 修改abp.zero的实体映射类,使生成的表和字段为大写状态

如何使用 Oracle 的实体框架支持强制帕斯卡案例?

java中,如何通过实体类名称获取对应的数据表名称

实体框架查询中新类名和新类名()之间的区别[重复]

实体框架创建复数表名,但视图需要一个单数表名?

为啥要在移动设备中使用实体框架?