我看起来像这样:
class foo
{
[Key]
int ID;
List<Bar> bars;
string s;
}
class bar
{
[Key]
int ID;
string s;
}
然后在控制器中:
public ActionResult BeAwesome(foo doo)
{
db.Entry(doo).State = EntityState.Modified;
db.SaveChanges();
return View(doo);
}
我可以确认doo正在传入一个条形列表,但条形图没有传播到数据库。 doo.s确实得到了保存。我需要做些什么来保存集合?
答案 0 :(得分:1)
您是否尝试在设置状态之前将实体附加到上下文?
db.foos.attach(doo);
db.Entry(doo).State = EntityState.Modified;
如果将doo中每个条形的状态设置为EntityState.Modified,会发生什么?或者可能将每个条形单独地连接在一个环中。
答案 1 :(得分:0)
你需要定义像这样的属性,
public virtual List<Bar> bars{get; set;}
并且您还需要将导航属性定义为虚拟以启用延迟加载。
答案 2 :(得分:0)
原因是只有foo设置为Modified
- 所有相关的栏都处于Unchanged
状态。你必须遍历条形并设置它们的状态:
public ActionResult BeAwesome(foo doo)
{
db.Entry(doo).State = EntityState.Modified;
foo.Bars.ForEach(b => db.Entry(b).State = EntityState.Modified);
db.SaveChanges();
return View(doo);
}
显然,如果你插入或删除了一些条形,你需要更复杂的逻辑来设置状态。