【问题标题】:How do I singularize my tables in EF Code First?如何在 EF Code First 中单数化我的表?
【发布时间】:2011-06-15 08:32:57
【问题描述】:

在命名我的数据库表时,我更喜欢使用单数名词。然而,在 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>();
     }
}

【问题讨论】:

    标签: entity-framework ef-code-first


    【解决方案1】:

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

    【讨论】:

    • 名称从 CTP5 更改为 EF 4.1。这现在称为 DbModelBuilder。
    【解决方案2】:

    PluralizingTableNameConvention 的定义位置已移至:

    using System.Data.Entity.ModelConfiguration.Conventions;

    【讨论】:

      【解决方案3】:

      您还可以更改属性值:

      在“工具”菜单上,单击“选项”。 在选项对话框中,展开数据库工具。 单击 O/R 设计器。 将 Pluralization of names 设置为 Enabled = False 以设置 O/R Designer,使其不会更改类名。 将 Pluralization of names 设置为 Enabled = True 以将复数规则应用于添加到 O/R Designer 的对象的类名。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多