55

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

3 に答える 3

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>();
}
于 2011-01-25T18:06:12.907 に答える
3

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

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

于 2015-07-29T14:23:53.770 に答える
1

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

using System.Data.Entity.ModelConfiguration.Conventions;

于 2014-06-24T05:02:17.363 に答える