使用手动输入覆盖实体框架自动生成的键
在尝试抑制框架的自动 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中文网其他相关文章!