【发布时间】:2012-11-27 15:00:16
【问题描述】:
所以我需要能够在我的编辑页面中连续编辑我的主键字段,我收到错误
存储更新、插入或删除语句 影响了意外数量的行 (0)。 实体可能已被修改或删除 因为实体已加载。刷新 ObjectStateManager 条目。
当我不更改主键字段时,我可以将所有其他更改保存到我的数据库中。
这是我的编辑功能。
//edit - post
[HttpPost]
public ActionResult ActiveCampaignsEdit(ActiveCampaign activecampaign)
{
try
{
if (ModelState.IsValid)
{
db.Entry(activecampaign).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("ActiveCampaigns");
}
}
catch (DataException err)
{
//Log the error (add a variable name after DataException)
ModelState.AddModelError(string.Empty, err.Message);
}
ViewBag.TypesList = new SelectList(db.Types, "TypeId", "TypeName");
ViewBag.CaptureFormsList = new SelectList(db.CaptureForms, "Id", "Name");
ViewBag.AssignedUsersList = new SelectList(db.Users, "Id", "Username");
return View(activecampaign);
}
我将如何编辑主键,还是我以错误的方式处理这个?
【问题讨论】:
-
我不明白反对意见。这个问题对我来说似乎有效且清晰。
-
谢谢!也许以前有人问过?我花了过去一个小时试图找到一种方法来解决它(搜索这个网站和谷歌),没有运气。
-
为什么要更改主键? EF 使用主键来标识要更新的记录。当你更改它时,它将无法进行更新
-
我需要根据标签号访问一行,而不是 ID(如果有意义的话)。标签号需要可编辑且唯一,我还必须将标签号传递给视图,而不是 Id。我是不是走错了路?现在写出来,听起来我有。
-
@GaryKenyon:如果之前有人问过,正确的做法是在参考原始问题的情况下投票结束,而不是对合法问题投反对票(尽管有些人会反对,如果它是非常明显的重复,例如在您输入问题时显示为相关问题的问题)。
标签: c# asp.net-mvc entity-framework asp.net-mvc-4