最初に単純なデータベース プロジェクトに Entity Framework コードを使用しようとしましたが、単純に理解できない問題に遭遇しました。
EF がテーブルの ID を自動的に 1 ずつ増やして設定していることに気付きました。そのフィールドに手動で入力した値は完全に無視されます。いくつかの検索の後、この動作を無効にする正しい方法は次のとおりであることを理解しています。
modelBuilder.Entity<Event>().Property(e => e.EventID).HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);
ただし、このエラーが発生しただけで、理由がわかりません。
未処理の例外: System.Data.Entity.Infrastructure.DbUpdateException: エントリの更新中にエラーが発生しました。詳細については、内部例外を参照してください。---
System.Data.UpdateException: エントリの更新中にエラーが発生しました。詳細については、内部例外を参照してください。---> System.Data.SqlClient.SqlException: IDENTITY_INSERT が OFF に設定されている場合、テーブル 'Events' の ID 列に明示的な値を挿入できません。
参考になれば、問題の POCO クラスは次のとおりです。
public class Event
{
[Key, Required]
public int EventID { get; set; }
public string EventType { get; set; } //TODO: Event Type Table later on
public DateTime StartDate { get; set; }
public DateTime EndDate { get; set; }
public virtual ICollection<Match> Matches { get; set; }
public virtual ICollection<EventParticipation> EventParticipation { get; set; }
}
前もって感謝します。