10

私はEntity Frameworkコードファーストを使用しています。byte100 行を超えないテーブルがあり、データ型( tinyintSQL Server 内) を主キーとして使用したいと考えています。

これは私がこれまでに持っているものです:

[Key]
public byte Id { get; set; }

問題は、Entity Framework がデータベースを作成するときに、挿入時に行を自動インクリメントできる ID 仕様プロパティを設定していないことです。

データ型をInt16( smallintSQL Server で) に変更すると、すべてが完全に機能します。

自動インクリメント プロパティを設定するように Entity Framework に指示する方法はありますか、または Entity Framework コード ファーストでバイトを主キーとして使用できませんか?

4

1 に答える 1

17

このbyte型は、キーおよび ID 列としてサポートされています。byte主キーを ID としてマークするのはデフォルトではありません。ただし、このデフォルトを上書きできます。

[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public byte Id { get; set; }

Identityオプションを明示的に設定する必要は、 an int、 alongおよび a short(およびおそらくより多くの型?) には必要ありませんが、a byte(= tinyintSQL Server では) には必要です。私はテストでそれを理解しましたが、公式に文書化されている場所を見つけることができませんでした。

于 2012-08-30T19:11:10.180 に答える