在命名我的数据库表时,我更喜欢使用单数名词。但是,首先在EF代码中,生成的表总是复数。我的DbSets是多元化的,我相信是EF生成名称的地方,但我不想将这些名称单一化,因为我认为在代码中使用复数更为实际。我也试过覆盖设置,但无济于事。
有什么想法吗?这是我的代码和谢谢。
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>();
}
}
答案 0 :(得分:88)
您已为此目的删除了错误的约定( PluralizingEntitySetNameConvention )。只需用下面的 OnModelCreating 方法替换,你就可以了。
using System.Data.Entity.ModelConfiguration.Conventions.Edm.Db;
...
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}
使用Entity Framework 6,在您的文件上继承自DbContext:
using System.Data.Entity.ModelConfiguration.Conventions;
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}
答案 1 :(得分:3)
您还可以更改属性值:
在“工具”菜单上,单击“选项”。 在“选项”对话框中,展开“数据库工具”。 单击O / R设计器。 将名称的多个化设置为Enabled = False以设置O / R设计器,以便它不会更改类名。 将多个名称设置为Enabled = True以将复数规则应用于添加到O / R设计器的对象的类名。
答案 2 :(得分:1)
PluralizingTableNameConvention定义的位置已移至:
using System.Data.Entity.ModelConfiguration.Conventions;