web-dev-qa-db-ja.com

EF Code Firstでテーブルを特異化するにはどうすればよいですか?

データベーステーブルに名前を付けるときは、単数形の名詞を使用することを好みます。ただし、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>();
     }
}
56
trevorc

この目的のために間違った規則(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>();
}
89
Morteza Manavi

プロパティ値を変更することもできます。

[ツール]メニューの[オプション]をクリックします。 [オプション]ダイアログボックスで、[データベースツール]を展開します。 [O/Rデザイナー]をクリックします。クラス名を変更しないようにO/Rデザイナーを設定するには、名前の複数形を有効= Falseに設定します。 O/Rデザイナーに追加されたオブジェクトのクラス名に複数形化ルールを適用するには、名前の複数形を有効化= Trueに設定します。

3
Francisco

PluralizingTableNameConventionの定義の場所は次の場所に移動しました。

using System.Data.Entity.ModelConfiguration.Conventions;

1
Mythlandia