1

作为 DbContext 中保存操作的一部分,我需要序列化扩展信息以存储在数据库的二进制字段中。

我编写了以下方法来拦截所有已添加或修改的 Client 对象,以确保在保存之前进行序列化。我想知道是否有更好的方法可以做到这一点,或者这种方法是否会产生问题。

public int Save()
{
    foreach (Client client in this.Context.Local.Clients)
    {   
        EntityState state = this.Context.Entry(client).State;
        if (state == EntityState.Added || state == EntityState.Modified)
        {
            client.SerializeExtended();
        }   
    }
    return this.Context.SaveChanges();
}
4

1 回答 1

2

覆盖DbContext.SaveChanges方法。

protected override int SaveChanges()
{
     foreach (var entry in ChangeTracker.Entries<Clients())
     {
        var entity = entry.Entity;
        if (entry.State == EntityState.Added || entry.State == EntityState.Modified)
        {
            entry.Entity.SerializeExtended();
        }
     }
     base.SaveChanges();
}
于 2012-11-28T19:11:32.550 回答