1

我正在寻找一种首先在 EF5 数据库上执行日志更改/审计跟踪的好方法。

我遇到的主要问题是,目前一个旧应用程序正在破坏,它使用触发器创建日志,但在该应用程序上,数据库连接为应用程序上的每个用户使用特定用户(应用程序上的每个用户都有自己的数据库用户( /delete 没有任何用户数据。

但我的应用程序(MVC4)只有 1 个字符串连接,仅使用 1 个用户(每个用户使用相同的数据库用户),因此触发器将从连接字符串存储数据库用户的 userId。

那么使用 EF 创建日志的好方法是什么?有没有办法使用触发器来做到这一点?(并传递用户ID和其他人?)。

我一直在阅读有关覆盖 onUpdate 功能的信息,但他们也说它不适用于 EF5

4

1 回答 1

1

在 DatabaseContext 中,可以覆盖 SaveChanges 函数。

您可以测试需要记录的条目的变更集。也许它是低级的,即接近数据层,但它可以在 EF 中工作。

你会得到这样的东西:

public override int SaveChanges()
{
    foreach (var entry in ChangeTracker.Entries())
    {
        if (entry.State == EntityState.Added)
        {
            var needToLogAdd = entry.Entity as INeedToLogAdd;
            if (needToLogAdd != null)
                    DoLogAdd(needToLogAdd);
        }
    }

    base.SaveChanges();
}
于 2013-10-30T10:48:38.110 回答