使用c#Linq将Obj插入List

时间:2016-04-06 19:27:05

标签: c# mysql asp.net linq

我正在尝试将对象插入列表中。

 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吗?

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

当您使用.ToList()时,您正在创建一个新实例,因此当您执行SaveChanges时,EF不知道这个新实例,因此它会在您的表中插入一个新项目。

你可以在这里看到一个很好的例子:http://www.entityframeworktutorial.net/update-one-to-many-entities-in-entity-framework.aspx