フィールドが変更されたかどうかを判断する必要があるコールがあります。しかし、そのエンティティidを使用してgetを呼び出すと、以前のバージョンと同じエンティティが返されます。NHibernateでエンティティフィールドが変更されたかどうかを確認します
Entity e = Dao.Get(id);
//At this point e.Field is X
e.Field = y;
Dao.Save(e);
Entity Dao.Get(Guid id)
{
return Session.Get(id);
}
Entity Dao.Save(Entity e)
{
Entity olde = Session.Get(e.Id);
if (e.Field != olde.Field) <--- e.Field == olde.Field so it does not run.
DoBigMethod(e);
return e;
}
エンティティクラスにonChangeメソッドを追加しないでこのような状況を処理するにはどうすればよいですか。
ユーザーに変更が加えられた場合、大きなコードセットが実行されるというフラグがあります。このコードは、特定のケースで例外をスローします。他のフィールドを更新しているだけの場合は、このチェックを行う必要はありません。そのような場合は例外が起こりにくいでしょう。 – Thad
私は私の答えにいくつかのアイデアを追加しました。それが役に立てば幸い。 –