foreach (var item in order.MyFiles)
{
var newFile = adapter.db.File.CreateObject();
newFile.Name = item.FileName;
adapter.db.File.AddObject(newFile);
adapter.db.SaveChanges();
item.MyFile.Add(new MyFile { FileID = newFile.FileID });
adapter.db.SaveChanges();
}
foreach (var item in tempFilesList)
{
adapter.db.DeleteObject(item);
}
adapter.db.SaveChanges();
そのコードはMyFile
テーブル内の行を複製します。たとえば、ループが 3 回繰り返される場合、6 行 (3 x 2* adapter.db.SaveChanges()
???)が表示されます。
しかし、1つしかない場合adapter.db.SaveChanges();
(最後の1つ)、エラーが発生します
「my_dbModel.FK_MyFile_File」関係のプリンシパル エンドを特定できません。追加された複数のエンティティが同じ主キーを持つ場合があります。
adapter.db.File.AddObject(newFile);
その場合、アイテムをに割り当てる前にアイテムをコミットしないことが原因だと思いますitem.MyFile.Add(new MyFile { FileID = newFile.FileID });
が、間違っている可能性があります。修正方法はありますか?