![](/img/trans.png)
[英]Entity Framework 6 GUID as primary key: Cannot insert the value NULL into column 'Id', table 'FileStore'; column does not allow nulls
[英]Why does Entity Framework allow me to insert into a table with an identity primary key on the first iteration of a loop but fails after?
我正在使用以下代码将记录插入表中:
foreach (string tag in splitTags)
{
objTag.Tag = tag;
objTag.ReportId = objReport.ReportId;
objTag.TagId = 0;
context.Tags.Add(objTag);
context.SaveChanges();
}
该表有一个主键TagID
,它是一个标识列。
它在循环的第一次迭代中按预期工作,但在任何其他尝试中失败并给出错误:
当 IDENTITY_INSERT 设置为 OFF 时,无法为表“Tags”中的标识列插入显式值”
我想知道为什么会发生这种情况,即使在发生任何上下文添加或保存更改之前将 TagID 设置为 0, ReportID
每次也相同,唯一的区别是 Tag 文本。
谢谢
您的循环中没有对象创建 您一次又一次地插入相同的对象。
实际上,您更改了现有对象的主键,这是不允许的。
所以在每个循环中创建一个新对象!
通常,应首选此类循环后的 SaveChanges。
除了@Holger 的回答之外,您还可以像这样去掉foreach
:
var tags = splitTags.Select(s => new Tag { Tag = s, ReportId = reportId });
context.Tags.AddRange(tags);
context.SaveChanges();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.