【发布时间】:2019-11-13 16:36:28
【问题描述】:
我正在尝试将记录插入到具有自动生成 ID 的表中。 出于这个原因,这是我的代码:
using (var context = new DbContext(GetConnection().Options))
{
context.Database.ExecuteSqlCommand("SET IDENTITY_INSERT dbo.Customers ON;");
context.SaveChanges();
context.Customers.Add(customer);
context.SaveChanges();
context.Database.ExecuteSqlCommand("SET IDENTITY_INSERT dbo.Customers OFF;");
}
但例外总是一样的:
当 IDENTITY_INSERT 设置为 OFF 时,无法为表“客户”中的标识列插入显式值。
我也尝试在 SQL Server Management Studio 中手动执行命令SET IDENTITY_INSERT dbo.Customers ON,并在执行上述代码后但抛出相同的异常。
为什么?
【问题讨论】:
-
为什么您需要提供显式值吗?
IDENTITY列的全部意义在于您不必担心提供正确的值 - SQL Server 将为您处理...... -
同意,您的要求没有任何意义。为什么不能让数据库生成值?如果您出于某种原因不希望这样做,请不要使用 IDENTITY 列
标签: c# sql-server entity-framework-core aspnetboilerplate