Я разрабатываю приложение 5 MVC с помощью EF 6. Автоматически созданный метод POST для редактирования:Как проверить, какие свойства/записи модифицируются и которые не включены Редактирование записи в EF 6
public ActionResult Edit([Bind(Include = "Id,Name,Address,Phone,SSNo,D1")] ABC abc)
{
if (ModelState.IsValid)
{
db.Entry(abc).State = EntityState.Modified;
db.SaveChanges();
}
return View(abc);
}
Есть ли какая-либо процедура/метод, с помощью которого я могу получить, какие записи были изменены и каковы исходные значения этих записей. Я пробовал метод, помеченный как ответ в вопросе this, но он не получил никаких изменений, хотя изменения были сделаны, т. Е. Цикл не выполняет итерации.
Мой код:
public ActionResult Edit([Bind(Include = "Id,Name,Address,Phone,SSNo,D1")] ABC abc)
{
if (ModelState.IsValid)
{
db.ABCs.Attach(abc);
var myObjectState = ((IObjectContextAdapter)db).ObjectContext.ObjectStateManager.GetObjectStateEntry(abc);
var modifiedProperties = myObjectState.GetModifiedProperties();
foreach (var propName in modifiedProperties)
{
Console.WriteLine("Property {0} changed from {1} to {2}",
propName,
myObjectState.OriginalValues[propName],
myObjectState.CurrentValues[propName]);
}
Console.ReadKey();
db.Entry(abc).State = EntityState.Modified;
db.SaveChanges();
return Json(abc);
}
return View(abc);
}
ABC модель содержит много других значений, чем указанные в параметрах метода, но я лишь вскользь те, которые могут быть отредактированы
То, что я пытаюсь сделать, это сохранить войдите в мою базу данных обо всех изменениях, внесенных в документ. Я хочу включать только изменения и исходные значения до внесения изменений в журнал, а не полную запись.
Как я могу это получить?
_ "Но я не могу их использовать." _ - почему? – CodeCaster
Я не понимаю, как их использовать .. У них разные типы –
См. [Дубликат] (http://stackoverflow.com/questions/3265257/getting-all-changes-made-to-an-object-in-the -entity-framework), это объясняется довольно хорошо там. Обновите свой вопрос с помощью фактического кода, если вы не можете заставить его работать. – CodeCaster