C# Unable to determine the principal end of the relationship

Viewed 25573
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();

That code duplicates rows in the MyFile table, e.g if the loop iterates 3 times I see 6 rows (3 x 2*adapter.db.SaveChanges() ???)

But, if I just have only one adapter.db.SaveChanges(); (that last one) I get the error

Unable to determine the principal end of the 'my_dbModel.FK_MyFile_File' relationship. Multiple added entities may have the same primary key.

I suppose it is caused that in that case it doesn't commit the adapter.db.File.AddObject(newFile); items before assinging them to the item.MyFile.Add(new MyFile { FileID = newFile.FileID }); But I can be wrong, any ideas how to fix it?

2 Answers
Related