Entity Framework での手動主キー入力の問題への対処
Entity Framework で主キーを手動で割り当てると、データベースで生成されたキー エラーが発生する可能性があります。この記事では、属性を使用してこれらの問題を回避する解決策の概要を説明します。
[NotMapped]
属性を直接使用することは推奨されません。 DatabaseGeneratedOption.None
は自動キー生成を防ぐための実行可能な代替手段のように見えますが、多くの場合、「ID 列に明示的な値を挿入できません」というエラーがスローされます。
この解決策には、IDENTITY_INSERT
テーブル オプションを使用して ID 列への明示的な挿入を有効にすることが含まれます。
<code class="language-sql">ALTER TABLE Event SET IDENTITY_INSERT ON;</code>
これにより競合が解決されます。 あるいは、属性を使用すると、よりクリーンなアプローチが提供されます。
<code class="language-csharp">using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; [Key] [DatabaseGenerated(DatabaseGeneratedOption.None)] public int EventID { get; set; }</code>
この属性ベースのメソッドは Entity Framework Core と互換性があります。 DatabaseGeneratedOption.None
または属性アプローチを採用することで、開発者は Entity Framework 内で手動の主キー割り当てを効果的に管理できます。
以上がEntity Framework で主キーを手動で設定するときに発生する「ID 列に明示的な値を挿入できません」エラーを回避する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。