从Entity Framework SaveChanges函数获取原始对象?

时间:2016-05-04 07:27:53

标签: vb.net entity-framework

出于审核原因,我将覆盖SaveChanges功能。但是,我想捕获原始和当前值作为原始对象(即人),以便我可以序列化前后两个。

if(isNaN(data[i].stored_value) == false) {
     sumNum += data[i].stored_value;
}

我有多远,但是当我尝试使用ChangeType时,它会抛出"对象必须实现IConvertible"。

2 个答案:

答案 0 :(得分:0)

我最后一次处理绝对需要跟踪每个更改的项目时,我们使用了历史表和ON UPDATE触发器。更改数据将触发触发器,然后将原始行复制到历史记录表中。

这是100%EF兼容,但您需要为每个表单独设置。

答案 1 :(得分:0)

这并不能完全回答您的主要问题,但可以帮助您改进审核。

免责声明:我是该项目的所有者Entity Framework Plus

我建议您查看我们的EF+ Audit Feature,可以使用此库轻松检索所有审核信息。

// 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)
    {
    }
}


// CALL your serializer here
SerializeToString(entries, ...);

代码是开源的。