2011-01-25 19 views
51

我更喜歡在命名我的數據庫表時使用單數名詞。然而,在EF代碼中,生成的表格總是複數。我的DbSets是複數形式,我相信是EF生成名稱的地方,但我不想將這些名稱單數化,因爲我相信在代碼中使用複數形式更爲實用。我也試圖壓倒設置,但無濟於事。如何在EF Code First中對我的表格進行單數化處理?

任何想法?這是我的代碼和謝謝。

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>(); 
    } 
} 

回答

83

您已刪除針對此目的的錯誤約定(PluralizingEntitySetNameConvention)。只需將您的OnModelCreating方法替換爲下面的方法,您就可以輕鬆前往。

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

實體框架6,在你的文件,從的DbContext繼承:

using System.Data.Entity.ModelConfiguration.Conventions; 

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

名稱從CTP5更改爲EF 4.1。這現在叫做DbModelBuilder。 – campo 2011-07-18 05:44:12

1

PluralizingTableNameConvention定義的位置已移到:

using System.Data.Entity.ModelConfiguration.Conventions;

2

您也可以更改屬性值:

在工具菜單上,單擊選項。 在選項對話框中,展開數據庫工具。 單擊O/R設計器。 將多個名稱設置爲Enabled = False以設置O/R設計器,使其不會更改類名稱。 將名稱多重化設置爲Enabled = True,以將多元化規則應用於添加到O/R設計器的對象的類名稱。