最近在做一个项目,全部使用Nhibernate来做,但是有个问题非常头疼~
经常会有“a different object with the same identifier value was already associated with the session”,这种错误!
根据ORM的思想来说,在一个Session中不能有多个相同ID的实体类的规则应该是合理的!
但是另外来说,实体类中经常有one-to-one,one-to-many,many-to-many的情况,并且为了效率来说都使用了lazy,但是使用了lazy,Load完实体之后,session就不能关闭。所以开始的时候我是采用HttpModule的方式,开始载入的时候打开session,载入完成的时候关闭session,页面内共用一个Session!
但是在实际应用中,经常会碰到同一个页面几个地方需要去load同一个ID的实体,特别是采用用户控件的时候,共用Session的话,必然出错,如果不共用Session,每次Load就创建新Session,但是因为lazy的问题,打开的Session不能马上关闭,Session何时关闭也是大问题~
不知道有没有人有好的方法对付这个情况~头大啊~