解決實體框架中的手動主鍵輸入問題
在實體框架中手動指派主鍵可能會導致資料庫產生的鍵錯誤。本文概述了使用屬性來避免這些問題的解決方案。
不鼓勵直接使用 [NotMapped]
屬性。 雖然 DatabaseGeneratedOption.None
似乎是防止自動金鑰產生的可行替代方案,但它經常引發「無法為識別列插入明確值」錯誤。
解決方案涉及使用 IDENTITY_INSERT
表選項啟用明確插入到識別列:
<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
或屬性方法,開發人員可以有效地管理實體框架內的手動主鍵分配。
以上是在實體框架中手動設定主鍵時如何避免「無法為識別列插入明確值」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!