将旧的(缓存的)实体与更新的实体进行比较,而不会激怒nhibernate

时间:2013-09-20 12:55:25

标签: c# nhibernate

我正在更新表单中的实体,为简单起见,我们称之为CompanyCar。我的目标是检查并查看其分配的所有者是否已更改,如果是,请向新老所有者发送电子邮件。

public Car SaveExistingCar(Car car)
        {


            var original = _CarRepository.LoadCarById(Car.Id);


            var carReturn = _CarRepository.SaveOrUpdateCar(Car)   //Error here


             //pseudo: if carReturn.Owner != original.Owner
             // Send Email


        return carReturn;
    }

不幸的是,它对此非常愤怒。

 a different object with the same identifier value was already associated with the session

我能理解这是怎么发生的......当然,好吧它对真实物体感到困惑。但是,这并没有帮助我解决它。我能做些什么来告诉它'原创'是假的吗?

1 个答案:

答案 0 :(得分:2)

ISession.Evict会从会话和第一级缓存中移除原车,您应该可以保存新车。