我有一个由EF6 Code First创建的数据库。某些表具有标识列。我需要使用OLD Id值向这些表插入一些记录。 我尝试了此链接How to switch between DatabaseGeneratedOption.Identity...中出现的解决方案,该解决方案演示了如何在计算列和非选项之间切换,但不在标识列之间切换。 当我尝试这样做时,我收到此错误消息:“当IDENTITY_INSERT设置为OFF时,无法在表'链接'中为标识列插入显式值。” 有什么方法可以解决这个问题吗?
答案 0 :(得分:2)
您面临的问题是EF向DBMS发送显式ID值,但在IDENTITY_INSERT设置为off时它不会发生任何错误。
您还必须执行以下操作: context.Database.ExecuteSqlCommand(" SET IDENTITY_INSERT Links ON");
这会告诉您的DBMS也接受显式值。 为此,您必须将此命令和(至少)SaveChanges()包装到一个事务中。