1

我有一个由 EF6 Code First 创建的数据库。有些表有一个标识列。我需要使用旧 Id 值向这些表中插入一些记录。我尝试了出现在此链接如何在 DatabaseGeneratedOption.Identity... 之间切换的解决方案,该解决方案演示了如何在计算选项和无选项之间切换,但不在标识列上。当我尝试这样做时,我收到此错误消息:“当 IDENTITY_INSERT 设置为 OFF 时,无法在表 'Links' 中插入标识列的显式值。” 有没有办法解决这个问题?

4

1 回答 1

2

您面临的问题是 EF 将显式 ID 值发送到 DBMS,但是当 IDENTITY_INSERT 设置为关闭时,它不需要任何值。

您还必须执行以下操作: context.Database.ExecuteSqlCommand("SET IDENTITY_INSERT Links ON");

这告诉您的 DBMS 也接受显式值。为此,您必须将此命令和(至少)SaveChanges() 包装到一个事务中。

于 2016-04-24T15:27:48.797 回答