相关疑难解决方法(0)

实体框架4.1 DbContext覆盖SaveChanges以审核属性更改

我正在尝试将属性更改的约束"审计日志"实现为一组类中的属性.我已成功找到如何设置CreatedOn | ModifiedOn类型属性,但未能找到如何"找到"已修改的属性.

例:

public class TestContext : DbContext
{
    public override int SaveChanges()
    {
        var utcNowAuditDate = DateTime.UtcNow;
        var changeSet = ChangeTracker.Entries<IAuditable>();
        if (changeSet != null)
            foreach (DbEntityEntry<IAuditable> dbEntityEntry in changeSet)
            {

                switch (dbEntityEntry.State)
                {
                    case EntityState.Added:
                        dbEntityEntry.Entity.CreatedOn = utcNowAuditDate;
                        dbEntityEntry.Entity.ModifiedOn = utcNowAuditDate;
                        break;
                    case EntityState.Modified:
                        dbEntityEntry.Entity.ModifiedOn = utcNowAuditDate;
                        //some way to access the name and value of property that changed here
                        var changedThing = SomeMethodHere(dbEntityEntry);
                        Log.WriteAudit("Entry: {0} Origianl :{1} New: {2}", changedThing.Name,
                                        changedThing.OrigianlValue, changedThing.NewValue)
                        break;
                }
            }
        return …
Run Code Online (Sandbox Code Playgroud)

entity-framework

39
推荐指数
2
解决办法
3万
查看次数

标签 统计

entity-framework ×1