如何在EF Code First中对我的表格进行单数化?

命名我的数据库表时,我更喜欢使用单数名词。 然而,在EF代码中,生成的表格总是复数。 我的DbSets是多元化的,我相信是EF生成名称的地方,但我不想将这些名称单数化,因为我相信在代码中使用复数forms更为实用。 我也试图压倒设置,但无济于事。

有任何想法吗? 这是我的代码和谢谢。

MyObjectContext.cs

public class MyObjectContext : DbContext, IDbContext { public MyObjectContext(string connString) : base(connString) { } public DbSet<Product> Products {get;set;} public DbSet<Category> Categories {get;set;} //etc. protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Conventions.Remove<PluralizingEntitySetNameConvention>(); } } 

您已经为此删除了错误的约定( PluralizingEntitySetNameConvention )。 只需将您的OnModelCreating方法replace为下面的内容,您就可以开始使用了。

 using System.Data.Entity.ModelConfiguration.Conventions.Edm.Db; ... protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Conventions.Remove<PluralizingTableNameConvention>(); } 

使用Entity Framework 6,在从DbContextinheritance的文件上:

 using System.Data.Entity.ModelConfiguration.Conventions; protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.Conventions.Remove<PluralizingTableNameConvention>(); } 

您也可以更改属性值:

在工具菜单上,单击选项。 在“选项”对话框中,展开“数据库工具”。 点击O / Rdevise器。 将多个名称设置为Enabled = False以设置O / Rdevise器,以使其不会更改类名称。 将多个名称设置为Enabled = True,以将多元化规则应用于添加到O / Rdevise器的对象的类名称。

PluralizingTableNameConvention定义的位置已经移动到:

using System.Data.Entity.ModelConfiguration.Conventions;