出于审核原因,我将覆盖SaveChanges功能。但是,我想捕获原始和当前值作为原始对象(即人),以便我可以序列化前后两个。
if(isNaN(data[i].stored_value) == false) {
sumNum += data[i].stored_value;
}
我有多远,但是当我尝试使用ChangeType时,它会抛出"对象必须实现IConvertible"。
答案 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, ...);
代码是开源的。