EntityFrameworkコアFluent Model Builderのキーとプロパティ

c# entity-framework entity-framework-core fluent fluent-entity-framework

質問

ですから、エンティティフレームワーク6では、キーとプロパティのデータベース生成を1つのステートメントで行いました:

modelBuilder.Entity<Function>()
                .HasKey(x => x.Id)
                .Property(x => x.Id)
                .HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);

エンティティフレームワークのcore(7)では、これはうまくいきません:

modelBuilder.Entity<Function>()
                .HasKey(x => x.Id)
                .Property(x => x.Id)
                .ValueGeneratedNever();

エラー: '' KeyBuilder 'に' Property 'の定義がなく、' KeyBuilder 'タイプの最初の引数を受け入れる拡張メソッド' Property 'がありません:

これは以下のように2つの独立したステートメントでなければならないのですか、EF6のように1つにする方法がありますか?

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<Function>()
                    .HasKey(x => x.Id);

    modelBuilder.Entity<Function>()
                    .Property(x => x.Id)
                    .ValueGeneratedNever();
}

受け入れられた回答

はい、EFコアでは別です。

理由は、EF6メソッドではPK列などを指定できるためEntityTypeConfiguration<TEntityType>Entity<...>呼び出しから取得したターゲットと同じ)が返されるため、エンティティの構成をEntityTypeConfiguration<TEntityType>ことができるからですタイプ。

しかし、EFコアメソッドが呼ばれる別のタイプを返しKeyBuilderのように、あなたはさらにPKを設定することができますHasNameリレーショナル制約名のために、または特定のデータベースは次のように属性ForSqlServerHasNameForSqlServerIsClusteredなど



Related

ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ