下面是代码。我已经将其简化为一无所有。基本上我打开一个会话,加载电影,测试锁定是否有效,然后驱逐该项目,然后再次尝试锁定它并引发异常。有没有人见过这个。如果有人可以提供帮助,我将不胜感激。没有自定义拦截器或任何东西。我使用流利的 nhibernate 映射和 nhibernate 3.3.1.4000。
var session = SessionFactory.OpenSession();
var m = session.Get(movie.Id);
session.Lock(m, LockMode.None);
session.Evict(m);
session.Lock(m, LockMode.None);
我创建了一个简单的类映射来缩小问题范围。该问题似乎是标记到属性的延迟加载中的错误。当延迟加载的电话号码被注释掉时,锁定工作正常,但是当它包含在映射中时会崩溃。
//DynamicUpdate();
//LazyLoad();
Id(x => x.Id);
Map(x => x.Name).Unique();
Map(x => x.CleanName);
Map(x => x.PhoneNumber).LazyLoad();
HasMany(o => o.CountryList).Table("Country").Element("String").Cascade.AllDeleteOrphan().LazyLoad();
//HasMany(x => x.AddressList).Cascade.AllDeleteOrphan().Inverse().LazyLoad();
Version(x => x.EditDate);