2017-08-14 12 views
0

AssociationType.IsForeignKeyがtrueであるかどうかを知る必要がある規約(IStoreModelConvention)を使用します。目的は、マッピングされたテーブル内のすべての外部キーの名前を変更することです。たとえば、アンダースコアを削除し、クラス名とプロパティ名から派生したまったく新しい名前を作成します。Entity Framework Core 2のAssociationTypeに相当するものは何ですか?

質問は、Entity Framework Core 2のAssociationType.IsForeignKeyと同等かどうか、またはこのタイプのカスタマイズをどのように達成できますか?

答えて

1

EFコア2には、ForeignKeysのネーミングシステムが異なります(またはそれ以上)。名前はFK_Table_ReferencedTable_FKPropertiesとして作成されます。ここで、TableはFK制約が定義されている場所です。 ReferencedTableは主要な側面です。また、FKPropertiesは、外部キーのプロパティの別々のリストである_です。おそらく、それはあなたが望む命名システムとマッチするでしょう。

外部キーのプロパティの名前をカスタマイズしたい場合、efコアにはまだユーザ定義の規約サポートはありません。しかし、EF Coreを使用すると、モデルメタデータを繰り返し処理して、必要な設定を行うことができます。派生したDbContextOnModelCreatingメソッドでは、以下のコードをFKという名前にしておきます。

protected override void OnModelCreating(ModelBuilder modelBuilder) 
{ 
    // Configure model 
    foreach (var entityType in modelBuilder.Model.GetEntityTypes()) 
    { 
     foreach (var declaredForeignKey in entityType.GetDeclaredForeignKeys()) 
     { 
      declaredForeignKey.Relational().Name = "<Construct_FK_Name>"; 
     } 
    } 
} 
+0

ありがとう、それはとても良いですね。私はテストします。 – gabomgp

関連する問題