我发现很难找到解决这个问题的办法。我在MVC应用程序中创建了一个Edit.cshtml视图。当前在我的控制器中,我有以下代码
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit(Vendor vendor)
{
if (ModelState.IsValid)
{
db.Vendors.Attach(vendor);
db.ObjectStateManager.ChangeObjectState(vendor, EntityState.Modified);
db.Entry(vendor).CurrentValues.SetValues(vendor);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(vendor);
}但是在我构建"dbo.ObjectStateManager“之前,会给出一个错误。看下面!
错误25 'VendorScorecard.Models.VendorScorecardEntities1‘不包含“ObjectStateManager”的定义,也找不到接受'VendorScorecard.Models.VendorScorecardEntities1’类型的第一个参数的扩展方法“ObjectStateManager”(您是缺少一个使用指令还是程序集引用?)C:\solutions\Web\VisualStudio2010\VendorScorecard\VendorScorecard-Good\VendorScorecard\Controllers\VendorController.cs 90 20 VendorScorecard
我也试过这一行代码!它删除了错误,但实际上不允许输入到我的数据库
//db.Entry(供应商).State= EntityState.Modified;
发布于 2013-12-12 01:19:17
来自:Why does the ObjectStateManager property not exist in my db context?
var manager = ((IObjectContextAdapter)dbContext).ObjectContext.ObjectStateManager;发布于 2016-04-12 01:39:53
尝试这段代码,它将解决您的问题。
db.Entry(employeeFromDB).State = EntityState.Modified;因此,基本上您必须去掉一行代码,然后将代码放在下面,请参见下面的内容
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit(Vendor vendor)
{
if (ModelState.IsValid)
{
db.Vendors.Attach(vendor);
db.Entry(vendor).State = EntityState.Modified;
db.Entry(vendor).CurrentValues.SetValues(vendor);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(vendor);
}https://stackoverflow.com/questions/20532702
复制相似问题