我们遇到的问题是,当我们提交要添加到数据库的多个对象的列表时,我们会收到与外键相关的错误...
using (context ctx = new context()
{
foreach(foo f in bars)
{
ctx.AddToFoo(f);
}
ctx.SaveChanges();
}
错误说insert语句与foriegn键约束冲突,但如果我在foreach循环中移动SaveChanges()它工作正常,但似乎它会慢得多......
我会将其转换为BulkCopy类,但我们有一堆与SaveChanges绑定的日志记录代码。
编辑: 这是指向例外Linky
的图片的链接答案 0 :(得分:0)
SaveChanges
似乎没有按照AddToFoo
中添加的foo的相同顺序保存每个foo。
答案 1 :(得分:0)
我不知道为什么它会在for循环中起作用。如果循环外有异常,那么它也应该在内部给出异常。
您应该解决异常中列出的外键约束。因此,如果约束是“FK_Foo_Parent”,那么您需要首先具有Foo项引用的Parent项。
您的代码应如下所示:
using (context ctx = new context())
{
ctx.AddToParents(parent);
foreach (foo f in bars)
{
parent.Foos.Add(f);
ctx.AddToFoos(f);
}
ctx.SaveChanges();
}
这将在新的foo记录和其父记录之间设置外键引用。