Entity Framework 7のキーID列を構成する方法

entity-framework-core

質問

私はエンティティフレームワーク7 RC1で次のMapperを持っています:

  b.ToTable("Categories");
  b.HasKey(x => x.Id);
  b.Property(x => x.Id) ... ??

どのようにEF 7 RC1のIDとID列を作成するのですか?

SQLに相当するものは次のとおりです。

Id int identity not null

私はこれを次のように読んだ。

b.Property(x => x.Id).ForSqlServer().UseIdentity();

しかし、EF7 RC1ではForSqlServer()が見つかりません。私は見つける:

.ForSqlServerHasComputedSql()
.ForSqlServerHasColumnName()
.ForSqlServerHasColumnNameType()
.ForSqlServerHasDefaultValue()
.ForSqlServerHasDefaultValueSql()
.ForSqlServerUseSequenceHiLo()
...

受け入れられた回答

呼び出してID列を明示的に構成できます。

b.Property(x => x.Id).UseSqlServerIdentityColumn();

また、注目に値する:identityは、主キーで使用されるデフォルト値生成パターンです。シーケンスを使用するのはオプトインです。


人気のある回答

natemcmasterが提供する答えは正しいです。 FluentAPIで定義することも、データアノテーション[Key]を使って主キーを定義することもできます。

しかし、EFコアにID値を定義する方法はいくつかあります。アイデンティティ(デフォルト)、シーケンスとHiLoパターンをシーケンスで使用することができます。 IDはデフォルトです。実際には、プロパティ名がIdまたは<typeName> Idで終わる場合、ID列として定義する必要はありません。慣例によるEFコアは、Idまたは<typeName> Idという名前のプロパティをエンティティのキ​​ーとして構成します。

ForSqlServerから拡張メソッド名を始める理由は、EF Coreが多くのデータベースプロバイダをサポートしているからです。これらのプロバイダの機能はわずかに異なりますので、使用しているプロバイダに応じて同じプロパティに対して異なる動作を指定することができます。

使用方法の詳細を知るためにこれらの記事をお読みくださいEFコアとSequcenceをし、 EFコアと、ハイローを



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