实体命名中的复数和单数有最佳实践吗?

3
在Visual Studio中命名实体时,是否存在命名实体使用复数或单数的最佳实践?一些示例将实体命名为复数形式...

Customers vs. Customer

对于实体之间的导航属性或关系,是否存在命名最佳实践?

var customer = new Customers(); 有意义吗? var accounts = person.Account; 有意义吗? - Kirk Woll
确实不是这样的..这就是为什么这些例子对我来说很困惑(它们来自一个EF书籍)。在我看来,最好的用法似乎是复数形式用于对象集合。但我询问最佳实践是因为我可能不知道使用复数的更好原因。 - webworm
我不知道你提到的例子,但我的最佳猜测是表名的复数形式更多地是一个有争议的话题。当C#类名源于表名时,你可能会得到被复数化的生成的C#类名。然而,在代码优先(以及在我看来,任何时候),你的C#标识符应该作为C#标识符有意义。 - Kirk Woll
2个回答

5
在ORM方法中,实体代表来自数据库的表/视图,并且它们默认情况下采用完全相同的名称。互联网上的许多示例都是以诸如“Customers”、“Categories”等命名的表为例的Northwind数据库。考虑到Northwind数据库是由Microsoft作为样本数据库和教育目的而设计的,因此复数命名约定似乎是正确的方式。
但是,Northwind数据库可以追溯到15年前的SQL Server 2000。随着SQL Server技术的发展,示例数据库也在变化
如果您现在查看新示例数据库AdventureWorksNorthwind比较,您会注意到名称变成了单数形式。我相信像EntityFramework、Linq、Generics这样的东西确实起到了作用,使得Microsoft以单数的方式重命名表...因为他们的教育代码清单中会有很多代码,如下所示:
Customers customer = GetTopCustomer(); //errrr??
var customers = GetTopCustomers(); //collection this time.. or single item?

使代码难以阅读,变得极其混乱。
走单数的路线 :) 微软已经在示例数据库中采用了这种方式。

4

我习惯将实体命名为单数形式,将表格命名为复数形式。这样对我来说最有意义,因为客户是一个,而在“客户”表格中可以有很多客户。

至于导航属性,我会根据同样的逻辑选择名称。如果关系链接到多个实体-则选择复数形式。


在这个语境中,实体和表之间有什么区别? - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接