作为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();
}
答案 0 :(得分: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();
}