1

DbContextでの保存操作の一部として、拡張情報をシリアル化して、データベースのバイナリフィールドに格納する必要があります。

追加または変更されたすべてのクライアントオブジェクトをインターセプトして、保存される前にシリアル化が行われるようにするために、次のメソッドを作成しました。これを行うためのより良い方法があるのか​​、それともこの方法で問題が発生するのか疑問に思います。

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 に答える