确定在编辑期间EF模型中的哪些数据发生了变化?

时间:2013-12-31 02:24:35

标签: c# entity-framework asp.net-mvc-5

我首先在代码中使用EF 6来创建我的数据库,并且可以轻松保存新的和更改的数据,但我想弄清楚的是一种简单的方法来确定用户编辑页面时更改了哪些数据。这是我在控制器中用于编辑页面的代码:

    [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)
        {

            db.Entry(section).State = EntityState.Modified;
            db.SaveChanges();
        }

        return View(model);
    }

我能想到的唯一方法是从数据库中提取数据并逐行比较,但这似乎过于复杂。

2 个答案:

答案 0 :(得分:1)

我认为你应该使用像这个样本中的反射

Loop Through An Objects Properties In C#

以相同的方式比较两个对象:)

你唯一应该改变的是结果而不是返回一个布尔值你可以返回一个diffObjects列表(只是一个描述差异的类的名称。)

答案 1 :(得分:0)

您可以进一步查询条目的更改。请查看this SO answer,了解如何让EF为您完成工作。使用LINQ,您可以轻松地使用这些更改并将其组合以供人类使用,审计等。