使用手動輸入覆蓋實體框架自動產生的鍵
在嘗試抑制框架的自動 ID 產生時,手動管理實體框架中的主鍵可能會帶來困難。本指南解決了這個常見問題。
嘗試使用 HasDatabaseGeneratedOption(DatabaseGeneratedOption.None)
阻止自動產生 EventID 時會出現挑戰。這通常與 SQL Server 中的 IDENTITY_INSERT
設定衝突。
解決衝突:
要解決此衝突,請啟用相關表 IDENTITY_INSERT
。這允許手動插入身份值。 在 DbContext 建構函數中實作此操作:
<code class="language-csharp">using (var connection = Db.Database.Connection) { var command = connection.CreateCommand(); command.CommandText = "SET IDENTITY_INSERT Events ON"; command.ExecuteNonQuery(); }</code>
基於屬性的鍵配置:
或者,使用屬性進行配置。 將以下屬性套用至您的 EventID
屬性:
<code class="language-csharp">[Key] [DatabaseGenerated(DatabaseGeneratedOption.None)] public int EventID { get; set; }</code>
此方法在 Entity Framework 6 和 Entity Framework Core 中的功能相同。
透過合併這些修改,您可以有效地停用自動主鍵產生並手動管理事件實體值。
以上是如何透過手動輸入鍵來停用實體框架中自動產生的鍵?的詳細內容。更多資訊請關注PHP中文網其他相關文章!