データベーステーブルに名前を付けるときは、単数形の名詞を使用することを好みます。ただし、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>();
}
プロパティ値を変更することもできます。
[ツール]メニューの[オプション]をクリックします。 [オプション]ダイアログボックスで、[データベースツール]を展開します。 [O/Rデザイナー]をクリックします。クラス名を変更しないようにO/Rデザイナーを設定するには、名前の複数形を有効= Falseに設定します。 O/Rデザイナーに追加されたオブジェクトのクラス名に複数形化ルールを適用するには、名前の複数形を有効化= Trueに設定します。
PluralizingTableNameConventionの定義の場所は次の場所に移動しました。
using System.Data.Entity.ModelConfiguration.Conventions;