我只是先破解 Entity Framework 代码。按照它们的命名约定,我们现在必须将表命名为复数形式,而不必干预该工具。我知道映射可以被覆盖。我的问题是,在遵循单数命名约定多年之后,我们又回到使用复数名称了吗?

另外,我想知道为什么新示例使用Northwind而不是Adventure Works。我在想原因是因为AW使用单数命名,并且它们无法展示无代码功能

最佳答案

RTM版本的Code First将完全支持一项很酷的功能,称为可插拔约定,您可以在其中添加或替换默认约定,例如您提到的默认约定。

幸运的是,您要寻找的东西已经包含在CTP5中。您可以通过删除PluralizingTableNameConvention约定来关闭复数表名称约定。这是您为此需要编写的所有代码:

using System.Data.Entity.ModelConfiguration.Conventions.Edm.Db;

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}

关于您提出的问题,您之所以会看到Northwind数据库而不是Adventure Works,是因为AW很大,而Northwind是一个相当小的数据库,因此使其更适合样本和演练。也就是说,您仍然需要在Code First中编写一些代码来使用Northwind数据库。

关于c# - Entity Framework 代码第一种命名约定-返回复数表名称?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4425027/

10-13 05:30