[解決済み] fluent APIで一意なConstraintを設定する?
2022-04-13 14:22:46
質問
私はコードファーストでEFエンティティを構築しようとしています。
EntityTypeConfiguration
主キーの作成は簡単ですが、一意性制約があるとそうはいきません。このためにネイティブのSQLコマンドを実行することを提案する古い投稿を見ましたが、それは目的を失っているように思えます。
解決方法は?
について
EF6.2
を使用することができます。
HasIndex()
を使用して、fluent API を使用してマイグレーション用のインデックスを追加します。
https://github.com/aspnet/EntityFramework6/issues/274
例
modelBuilder
.Entity<User>()
.HasIndex(u => u.Email)
.IsUnique();
について
EF6.1
以降では
IndexAnnotation()
を使用して、流れるような API でマイグレーション用のインデックスを追加します。
http://msdn.microsoft.com/en-us/data/jj591617.aspx#PropertyIndex
への参照を追加する必要があります。
using System.Data.Entity.Infrastructure.Annotations;
基本的な例
ここでは、簡単な使用法を紹介します。
User.FirstName
プロパティ
modelBuilder
.Entity<User>()
.Property(t => t.FirstName)
.HasColumnAnnotation(IndexAnnotation.AnnotationName, new IndexAnnotation(new IndexAttribute()));
実用例です。
ここでは、より現実的な例を紹介します。これは
ユニークインデックス
を複数のプロパティに設定することができます。
User.FirstName
と
User.LastName
というインデックス名を持つ。
modelBuilder
.Entity<User>()
.Property(t => t.FirstName)
.IsRequired()
.HasMaxLength(60)
.HasColumnAnnotation(
IndexAnnotation.AnnotationName,
new IndexAnnotation(
new IndexAttribute("IX_FirstNameLastName", 1) { IsUnique = true }));
modelBuilder
.Entity<User>()
.Property(t => t.LastName)
.IsRequired()
.HasMaxLength(60)
.HasColumnAnnotation(
IndexAnnotation.AnnotationName,
new IndexAnnotation(
new IndexAttribute("IX_FirstNameLastName", 2) { IsUnique = true }));
関連
-
[解決済み】"出力タイプがクラスライブラリのプロジェクトは直接起動できない"
-
[解決済み】Excel "外部テーブルが期待された形式ではありません。"
-
[解決済み】C#はJavaのcharAt()と同等?)
-
[解決済み】トランスポート接続からデータを読み取れない:既存の接続は、リモートホストによって強制的に閉じられました。
-
[解決済み】「入力文字列が正しい形式ではありませんでした」エラーの解決方法は?[重複しています]。
-
[解決済み】取り消せないメンバはメソッドのように使えない?
-
[解決済み】なぜこのコードはInvalidOperationExceptionを投げるのですか?
-
[解決済み】Unity 「関連するスクリプトを読み込むことができません」「Win32Exception: システムは指定されたファイルを見つけることができません"
-
[解決済み】Linq 構文 - 複数列の選択
-
[解決済み] GUIDを主キーとして使用する場合のベストプラクティス、特にパフォーマンスに関して教えてください。[クローズド]。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] [Entity Framework 4.1でエンティティに関連オブジェクトを追加する際に、エンティティオブジェクトをIEntityChangeTracker.の複数のインスタンスから参照できない。
-
[解決済み] 保護レベルによりアクセス不能になりました。
-
[解決済み] 'SubSonic.Schema .DatabaseColumn' 型のオブジェクトをシリアライズする際に、循環参照が検出されました。
-
[解決済み】リソースの読み込みに失敗した:ステータス500(内部サーバーエラー)のサーバーの応答)
-
[解決済み】OnCollisionEnter2Dが実行されない?
-
[解決済み】2年前のMSDateを把握する【クローズド
-
[解決済み] [Solved] .NETでスレッドの終了を待つには?
-
[解決済み】パラメータ付きRedirectToAction
-
[解決済み] Entity Framework Code Firstを使用して一意制約を設定することは可能ですか?
-
[解決済み】Entity Frameworkで複数のカラムにユニークキー制約を設定する