我的任务是开发一种审计数据库中数据读取/编辑/删除的方法。我做了一个关于如何用EF做这件事的搜索。我在Implementing Audit Trail using Entity Framework Part-1的CodeProject上找到了这篇博文。然而,这篇文章是在2009年写的。我确信它会工作,但我想知道如果使用EF6或更高版本,可能会有更好的方法来做到这一点?EF 6+是否有更新的方法来获取日志记录/审计所需的数据?是否有使用EF 6+进行审计的“最佳实践”类型的方法?
发布于 2016-05-26 03:58:14
审计仍然只能通过实现自己或使用第三方库来实现,即使对于EF6或EF核心也是如此。
免责声明:我是Entity Framework Plus项目的所有者
该库支持EF5、EF6和EF核心,并在数据库中具有多个必备功能,如AutoSave。
// using Z.EntityFramework.Plus; // Don't forget to include this.
var ctx = new EntityContext();
// ... ctx changes ...
var audit = new Audit();
audit.CreatedBy = "ZZZ Projects"; // Optional
ctx.SaveChanges(audit);
// Access to all auditing information
var entries = audit.Entries;
foreach(var entry in entries)
{
foreach(var property in entry.Properties)
{
}
}文档:EF+ Audit
发布于 2016-05-26 04:32:33
好吧,根据你的需求,有一些选择。我认为审计最好是在数据库级别上进行,因为性能和审计在实体框架上下文之外所做的更改。根据Sql Server版本和版本的不同,您可能会使用https://msdn.microsoft.com/en-us/library/cc280386.aspx等内置功能
如果您需要包含应用程序级数据,则可以结合使用拦截器来包含这些数据(请参阅https://msdn.microsoft.com/en-us/data/dn469464.aspx#BuildingBlocks.Result)
脑海中浮现的另一个选择是在SaveChanges (参见https://msdn.microsoft.com/en-us/library/cc716714(v=vs.100).aspx )的覆盖中编写一些审计逻辑。这只会影响保存,而不会影响读取...
https://stackoverflow.com/questions/37446134
复制相似问题