我正在尝试将对象插入列表中。
childModel childElement= new childModel;
parentModel myList = db.list.Where(e => e.id.equals(someId)).Include("someNestedList").FirstOrDefault();
childElement.prop1 = true;
myList.someNestedList.Insert(index, childElement);
所以我注意到,从这里一切正常,因为它会将子对象插入到适当索引的列表中。当我尝试保存此列表时出现问题。
db.Entry(myList).State = EntityState.Modified;
db.SaveChanges();
我注意到它并没有在数据库中保存索引,而是添加了另一个条目。使用下一个可用的ID。所以我要说的是,一旦插入值,它就不会重新排列主键。
最好不使用insert方法,只为每个子元素使用db.Entry()= EntityState.Modified吗?
有什么建议吗?
答案 0 :(得分:0)
当您使用.ToList()时,您正在创建一个新实例,因此当您执行SaveChanges时,EF不知道这个新实例,因此它会在您的表中插入一个新项目。
你可以在这里看到一个很好的例子:http://www.entityframeworktutorial.net/update-one-to-many-entities-in-entity-framework.aspx