为啥实体框架要复数和大写实体类名?
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 食谱。
【讨论】:
以上是关于为啥实体框架要复数和大写实体类名?的主要内容,如果未能解决你的问题,请参考以下文章