我正在尝试修改来自View的模型,然后使用该模型更新我的数据库。我的代码如下所示:
public ActionResult Edit(Saving saving)
{
if (ModelState.IsValid)
{
Int32[] ids = saving.CatIds.Split(',').Select(n => Convert.ToInt32(n)).ToArray();
foreach (var category in db.Category.Where(m => ids.Contains(m.id)).ToList())
saving.Category.Add(category);
db.ObjectStateManager.ChangeObjectState(saving, EntityState.Modified);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(saving);
}
我的代码给出了这个错误:
无法附加对象,因为它已在对象上下文中。只有当对象处于未更改状态时才能重新附加对象。
如果我尝试这段代码:
public ActionResult Edit(Saving saving)
{
if (ModelState.IsValid)
{
Int32[] ids = saving.CatIds.Split(',').Select(n => Convert.ToInt32(n)).ToArray();
foreach (var category in db.Category.Where(m => ids.Contains(m.id)).ToList())
saving.Category.Add(category);
db.ObjectStateManager.ChangeObjectState(saving, EntityState.Unchanged);
db.Saving.Attach(saving);
db.ObjectStateManager.ChangeObjectState(saving, EntityState.Modified);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(saving);
}
我收到以下错误:
违反PRIMARY KEY约束'PK_ProductCategory_1'。无法在对象'dbo.ProductCategory'中插入重复键。
我不知道该怎么做以及如何解决它。任何帮助将不胜感激。谢谢
答案 0 :(得分:0)
您是否尝试过将其附加,然后修改属性?
if (ModelState.IsValid)
{
db.Saving.Attach(saving);
Int32[] ids = saving.CatIds.Split(',').Select(n => Convert.ToInt32(n)).ToArray();
foreach (var category in db.Category.Where(m => ids.Contains(m.id)).ToList())
saving.Category.Add(category);
db.SaveChanges();
}