Entity Framework のコード優先アプローチにおける主キーの競合の回避
Entity Framework のコードファースト開発では、主キーを手動で指定すると、自動キー生成と競合する場合があります。 これにより、データを挿入しようとするとエラーが発生することがよくあります。これらの問題を回避する方法を見てみましょう。
1 つの方法には、自動キー生成を無効にすることが含まれます。
<code class="language-csharp">modelBuilder.Entity<Event>().Property(e => e.EventID).HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);</code>
ただし、これによりエラーが発生する可能性があります:
<code>Cannot insert explicit value for identity column in table 'Events' when IDENTITY_INSERT is set to OFF.</code>
解決策は、POCO クラス (例: Event
) 内で主キー プロパティを正しく定義することにあります。 プロパティ宣言に Key
属性と Required
属性の両方が含まれていることを確認してください:
<code class="language-csharp">[Key, Required] public int EventID { get; set; }</code>
また、次の属性を使用して同じ結果を得ることができます:
<code class="language-csharp">[Key] [DatabaseGenerated(DatabaseGeneratedOption.None)] public int EventID { get; set; }</code>
このアプローチは Entity Framework と Entity Framework Core の両方と互換性があり、手動で割り当てられた主キーを管理するための信頼できる方法を提供します。
以上がEntity Framework でエラーなく主キーを手動で設定する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。