2016-11-04 4 views
1

IdプロパティをPKとしてマークしたいと思います。これは自動生成され、自動インクリメントされます。EF Coreの流暢な構文を使用して、PK列の自動生成を設定するにはどうすればよいですか?

EF6では、私はこれを行うだろう:

modelBuilder 
    .Entity<Foo>() 
    .HasKey(m => m.MyPkColumn); 

modelBuilder 
    .Entity<Foo>() 
    .Property(m => m.MyPkColumn) 
    .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity); // this doesn't work 

これはEFコアでは動作しません。新しい構文は何ですか?

+0

ValueGeneratedOnAdd EF 6からDatabaseGeneratedOptionsを置き換えSQL ServerでIDタイプとして構成する必要があります。それをまったく構成する必要はありません。 –

+0

@MikeBrind私は大会を好きではありません。私はEF6でできるように指定することができるようにしたい。 EF7 /コアで可能ですか? – grokky

答えて

1

EFコアは、新たな方法があります:あなたは、キープロパティ "ID" という名前を付け、それ `int`タイプにする場合、それは自動的になります

modelBuilder.Entity<MyEntity>() .Property(p => p.Id) .ValueGeneratedOnAdd();

+0

ありがとう。 [docsは](https://docs.efproject.net/en/latest/modeling/generated-properties.html#value-generated-on-add-fluent-api)それは値が生成される。そして、それはDBMSに "依存する"ということです。だから、基本的に、新しい方法はもっと混乱させ、少なくします。他に解決策がない限り。 – grokky

+1

@grokky EFコアのアイデアは、データベースプロバイダごとに設定を異ならせることができるということです。 SqlServerを使用している場合、直接の同等物は 'UseSqlServerIdentityColumn()'メソッドです。 –

+0

@IvanStoevうん、私はそれに気がついたが、MSSQLとSQLiteのどちらか、あるいは同様のもの(サーバーとモバイルクライアント)に同じデータレイヤーコードを配備する必要がある。残念なことに、以前のような不履行はありません。 – grokky

関連する問題