[英]Foreign key problem with nested linq to sql insert
我有一个有趣的问题,我正在尝试使用 l2s 插入嵌套数据,如果我不尝试将带有 fk 的实体也插入到根父级,那么一切都可以,示例模式:
所有id都是pk身份
测试代码:
Models.testdbDataContext db = new Models.testdbDataContext();
List<string> data = new List<string>();
data.Add("kkkk1");
data.Add("kkkk2");
data.Add("kkkk3");
data.Add("kkkk4");
data.Add("kkkk5");
foreach (var item in data)
{
nested1 n1 = new nested1();
n1.name1 = "test1";
db.nested1.InsertOnSubmit(n1);
foreach (var item2 in data)
{
nested2 n2 = new nested2();
n2.name2 = "test2";
n1.nested2.Add(n2);
foreach (var item3 in data)
{
nested3 n3 = new nested3();
n3.name3 = "test3";
n2.nested3.Add(n3);
}
}
}
db.SubmitChanges(); <-- error here (duh)
错误:“INSERT 语句与 FOREIGN KEY 约束“FK_nested3_nested1”冲突。冲突发生在数据库“TESTDB.MDF”、表“dbo.nested1”、列“id”中。语句已终止。”
问题是如果表nested3也有fk到nested1 id这个错误发生,当nested3只有fk到它的父nested2 id时没有问题,似乎l2s不能只从前一个父级获得来自nested1的身份。
那么如何克服呢?
好的,我找到了解决方案。
如果还有另一个 fk 您需要将当前嵌套数据也添加到父集合中,这样 l2s 将获得您需要的尽可能多的 fk 标识值。
对于此示例,它将是:
n1.nested3.Add(n3);
在 n2.nested3.Add(n3); 之后
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.