Имам обаждане, което трябва да определи дали дадено поле е променено. Но извикването на get using that entities id връща същия обект, а не предишната версия.
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 към класа Entity.