Я попытался выполнить несколько различных учебников, чтобы сохранить обновленную дату в моей базе данных SQL, но каждый из них не может сохранить и каждый из них дает разные ошибки , поэтому я полностью потеряю то, как я должен обновлять данные. Это то, что я пытался и ошибки я получаю:Не удалось сохранить изменения в базе данных через Entity Framework 6, попробовали несколько разных тотализаторов, но никто не работает
http://msdn.microsoft.com/en-us/library/dd756368.aspxcontext.UpdateObject
не существует
http://www.asp.net/mvc/tutorials/mvc-5/introduction/examining-the-edit-methods-and-edit-view Дайте ошибку
System.Data.Entity.Core.OptimisticConcurrencyException : Store update, insert, or delete statement affected an unexpected number of rows (0). Entities may have been modified or deleted since entities were loaded. Refresh ObjectStateManager entries.
http://www.dotnetcurry.com/showarticle.aspx?ID=619 дать мне ошибку:
Sequence contains no elements
Так Я в недоумении, как то, что я должен сделать, чтобы обновить эту дату. Вот два кодовых блоков я пытался:
[Route("Edit"), HttpPost, ValidateAntiForgeryToken]
public ActionResult EditSection([Bind(Include = "ID, RouteName, Type, Title, Synopsis")] Section section, HttpPostedFileBase Logo)
{
SectionAddEditVM model = new SectionAddEditVM { Section = section };
if (ModelState.IsValid)
{
try
{
using (db)
{
var SectionUpdate = (from s in db.Sections
where s.ID == section.ID
select s).First();
SectionUpdate.RouteName = section.RouteName;
SectionUpdate.Type = section.Type;
SectionUpdate.Title = section.Title;
SectionUpdate.Synopsis = section.Synopsis;
db.SaveChanges();
}
}
catch (Exception ex)
{
ErrorSignal.FromCurrentContext().Raise(ex);
ModelState.AddModelError("Processing Error", "There was a problem processing the change, please try again later.");
return View(model);
}
}
return View(model);
}
И
[Route("Edit"), HttpPost, ValidateAntiForgeryToken]
public ActionResult EditSection([Bind(Include = "ID, RouteName, Type, Title, Synopsis")] Section section, HttpPostedFileBase Logo)
{
SectionAddEditVM model = new SectionAddEditVM { Section = section };
if (ModelState.IsValid)
{
try
{
using (db)
{
db.Entry(section).State = EntityState.Modified;
db.SaveChanges();
}
}
catch (Exception ex)
{
ErrorSignal.FromCurrentContext().Raise(ex);
ModelState.AddModelError("Processing Error", "There was a problem processing the change, please try again later.");
return View(model);
}
}
return View(model);
}
около 200 строк выше коды редактирования я объявившая своей db
собственности, используя private SectionContext db = new SectionContext();
и он используется без каких-либо проблем, чтобы добавить новые данные на сервер и получать данные с этого сервера.
На строках, которые читают 'using (db)', то есть вы обычно создаете контекст базы данных, например, 'using (var db = new YourDatabaseEntities())'. Я удивлен, что вы не получаете «NullReferenceException» при попытке использовать переменную 'db' после этого. Где определяется и инициализируется переменная/поле 'db'? – Steve
К сожалению, я должен был упомянуть, что DB инициализируется около 200 строк в контроллере и используется без проблем при сохранении новых данных и получении существующих данных. – Matthew
Если вы инициализируете переменную db в другом месте, вы не должны использовать ее в инструкции using(). использование закроет ваше соединение db. – LeffeBrune