我在保存对数据库的更改时遇到问题。SaveChanges()实体框架问题4.1
我更新了模型中的在我的控制器,但是当我保存的SaveChanges使用()我最终在数据库B.
重复的项目中的UpdateModel(后)的变化被称为我检查了Bs属性,这是因为我期望但是在SaveChanges()被调用后,如果我检查Bs属性,我会看到Id完全不同(新的Id和新条目)。
我的班级与此类似:
public class A
{
[HiddenInput(DisplayValue = false)]
public int AId { get; set; }
public string Name { get; set; }
public virtual ICollection<B> Bs{ get; set; }
}
public class B
{
[HiddenInput(DisplayValue = false)]
public int BId { get; set; }
public string Name { get; set; }
public virtual ICollection<A> As{ get; set; }
}
我的控制器是这样的:
[HttpPost]
public ActionResult Edit(A theA)
{
try
{
db.Entry(theA).State = EntityState.Modified;
foreach (var item in theA.Bs)
{
db.Entry(item).State = EntityState.Modified;
}
db.SaveChanges();
return RedirectToAction("Index");
}
catch
{
return View();
}
}
难道我做错了什么?
在此先感谢
您的控制器方法对于查看从DB中检索对象的位置很重要,可以修改它们并调用SaveChanges。 – Slauma 2011-04-17 12:53:40