在命名数据库表时,我更喜欢使用单数名词。但是,首先在EF代码中,生成的表总是多个。我的DbSet是复数形式,我相信这是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>();
     }
}

最佳答案

为此,您删除了错误的约定(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>();
}

10-04 11:31