Entity Framework: 手動主キー管理
Entity Framework (EF) は通常、主キー値を自動生成します。 ただし、主キーを手動で指定する必要がある状況が発生します。このガイドでは、これを実現する方法について詳しく説明します。
自動キー生成の無効化
主キーの手動入力を有効にするには、OnModelCreating
メソッドを次のように変更します。
<code class="language-csharp">modelBuilder.Entity<Event>().Property(e => e.EventID).HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);</code>
ID 列の競合への対処
テーブルの IDENTITY_INSERT
プロパティが OFF
に設定されている場合、「ID 列は明示的な値を挿入できません」というエラーが発生します。 これを修正するには、データを挿入する前に一時的に IDENTITY_INSERT
を ON
に設定します。
属性ベースの構成
または、属性を使用してクラス内で直接主要なプロパティを定義します。
<code class="language-csharp">[Key] [DatabaseGenerated(DatabaseGeneratedOption.None)] public int EventID { get; set; }</code>
このメソッドは OnModelCreating
の変更を回避し、EF Core と互換性があります。
更新された POCO クラスの例
次の POCO クラスは、属性ベースのアプローチを示しています。
<code class="language-csharp">public class Event { [Key] [DatabaseGenerated(DatabaseGeneratedOption.None)] public int EventID { get; set; } public string EventType { get; set; } public DateTime StartDate { get; set; } public DateTime EndDate { get; set; } public virtual ICollection<Match> Matches { get; set; } public virtual ICollection<EventParticipation> EventParticipation { get; set; } }</code>
このアプローチは、EF モデルで手動で設定された主キーを管理するための、よりクリーンで保守しやすいソリューションを提供します。
以上がEntity Framework で主キー値を手動で設定する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。