簡體   English   中英

插入多條記錄時實體框架外鍵問題?

[英]Entity Framework foreign key issues when inserting multiple records?

我們遇到了一個問題,當我們提交要添加到數據庫的幾個對象的列表時,我們會收到與外鍵相關的錯誤...

using (context ctx = new context()
{
    foreach(foo f in bars)
    {
         ctx.AddToFoo(f);
    }
    ctx.SaveChanges();
}

該錯誤表示插入語句與外鍵約束沖突,但是如果我將SaveChanges()移動到foreach循環內,它可以正常工作,但似乎會慢得多......

我會將它卷入BulkCopy類,但我們有一堆與SaveChanges相關的日志記錄代碼。

編輯:這里是鏈接到異常Linky的圖片的鏈接

看起來SaveChanges不會按照在AddToFoo中添加的相同順序保存每個 foo 。

我不知道為什么它會在 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 記錄與其父記錄之間的外鍵引用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM