EFコアRC 2でこのコードを実行する方法はありませんか?
保護された オーバーライド 無効OnModelCreating(ModelBuilderのModelBuilderの) { modelBuilder.Conventions.Remove <PluralizingTableNameConvention> (); }
EF RC2版はEFコアチームに由来し、この規則を持っていません。
EFコアの過去のプレリリースでは、エンティティのテーブル名はいた
エンティティクラス名と同じ。RC2では、私たちは今、DbSetの名前の使用
プロパティを。何DbSetプロパティが指定されたエンティティ・タイプに定義されていない場合、
その後、エンティティクラス名が使用されています。
あなたはRC1テーブルの命名規則に戻したい場合は今、あなたは方法の3種類を使用することができますがあります。
1.単数形の名前DbSetプロパティを選択します。
一つの方法は、あなたが本のエンティティを持っている、と書籍のテーブルにマップするとしましょう(私は好きではない)プロパティ名のごDbSetを分離することです。
公共DbSet <ブック>ブック{ 取得します。セット; }
2. ToTable()流暢API:
もちろん、あなたは常に任意の適切な契約をカバーし、あなたのニーズに応じて、テーブルの名前を指定するには、流暢なAPIを使用することができます。
modelBuilder.Entity <ブック>()ToTable(。"本");
3.ライティングカスタム条約:
この点で合意がないだけEFコアRC2ので、それは最初に、我々はModelBuilderのオブジェクトに拡張メソッドを作成する必要があり、我々はこれを書かれていることができないという意味ではありません。
Microsoft.EntityFrameworkCore.Metadata.Internalを使用しました。
パブリック静的のクラスModelBuilderExtensions {
パブリック静的ボイドRemovePluralizingTableNameConvention (このModelBuilderのModelBuilderの){ foreachの(IMutableEntityTypeエンティティmodelBuilder.Model.GetEntityTypesに()){entity.Relational()テーブル名= entity.DisplayName()。}}}
その後、我々は単にオブジェクトにOnModelCreating DbContext方法からそれを呼び出します。
保護オーバーライドボイドOnModelCreating (ModelBuilderのModelBuilderの){modelBuilder.RemovePluralizingTableNameConvention()。}
オフ:
私は複数のテーブル名のように、私は他のオプションよりも最後のオプションを好む、そして流れに行っていない。言い換えれば、これは私の個人的な意見で、他の開発者がより良いこれらの3つの方法のいずれよりも、それを見つけることができますそうでない場合は、より有利な、との一致を選択:)