Ton*_*ony 33 c# entity-framework
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();
Run Code Online (Sandbox Code Playgroud)
该代码复制MyFile表中的行,例如,如果循环迭代3次,我看到6行(3 x 2*adapter.db.SaveChanges()???)
但是,如果我只有一个adapter.db.SaveChanges();(最后一个)我得到错误
无法确定'my_dbModel.FK_MyFile_File'关系的主要结尾.多个添加的实体可以具有相同的主键.
我认为这是因为在这种情况下它不会adapter.db.File.AddObject(newFile);在向他们提出之前提交项目item.MyFile.Add(new MyFile { FileID = newFile.FileID });但是我可能是错的,任何想法如何修复它?
Kam*_*yar 51
在保存更改之前newFile.FileID定义新内容时无法使用MyFile.在将新实体保存在数据库中之前,FileID是默认值(0).你必须使用File你MyFile班级的导航属性.EF将检测关系并适当地提交数据.
尝试更改行item.MyFile.Add(new MyFile { FileID = newFile.FileID });:
item.MyFile.Add(new MyFile { File = newFile });
Run Code Online (Sandbox Code Playgroud)
其中File是在MyFile实体中定义的导航属性.
| 归档时间: |
|
| 查看次数: |
22724 次 |
| 最近记录: |