Как проверить, какие свойства / записи изменены, а какие нет на Редактирование записи в EF 6
Я разрабатываю приложение MVC 5 с использованием EF 6. Автоматически сгенерированный метод POST для редактирования:
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);
}
Есть ли какая-либо процедура / метод, с помощью которого я могу получить то, какие записи изменены и каковы были первоначальные значения этих записей. Я попробовал метод, отмеченный как ответ вэтот вопрос, но он не получил никаких изменений, хотя изменения были внесены, то есть цикл не повторяется.
Мой код:
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 содержит много значений, отличных от указанных в параметрах метода, но я передаю только те, которые можно редактировать
То, что я пытаюсь сделать, - это вести журнал в моей базе данных обо всех изменениях, внесенных в документ. Я хочу включить только изменения и исходные значения до внесения изменений в журнал, а не полную запись.
Как я могу получить это?