IDENTITY_INSERT ON不被实体框架DBSet.Add方法所尊重
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IDENTITY_INSERT ON不被实体框架DBSet.Add方法所尊重相关的知识,希望对你有一定的参考价值。
我运行此查询:
context.Database.SqlCommand("SET IDENTITY_INSERT [Songs] ON;");
就在我从.Add()
执行DbSet
方法之前。
我的数据仍在使用标识值而不是我提供的ID。
我只是暂时想要这个(用于数据迁移),以后它应该保留为自动生成的身份。
我正在为数据库使用SQL Server CE 4。
答案
EF无法猜测您已经执行了IDENTITY_SET命令并相应地更改了其内部逻辑。
如果需要插入特定的Id值,也可以使用SqlCommand进行插入。
另一答案
这可能是个问题。 DbContext
本身处理数据库连接。仅当在与打开身份插入相同的连接上执行插入时,此方法才有效。我认为它会在此命令后释放连接。您可以尝试使用其他DbContext的构造函数,并传递自己打开的DbConnection
实例并自行处理其关闭。
以上是关于IDENTITY_INSERT ON不被实体框架DBSet.Add方法所尊重的主要内容,如果未能解决你的问题,请参考以下文章
实体框架抛出无法在表中插入标识列的显式值...当 IDENTITY_INSERT 设置为 OFF 错误
无法插入显式值,因为 IDENTITY_INSERT 为 OFF,但无法将 IDENTITY_INSERT 设置为 ON,因为它已经为 ON
Roles.AddUsersToRoles() 要求 IDENTITY_INSERT 为 ON
set IDENTITY_INSERT on 和 off 的设置