繁体   English   中英

嵌套 linq 到 sql 插入的外键问题

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM