Nhibernate 恩希伯内特的悲哀。调用lock重新附加对象会引发异常;没有:MovieProxy“的持久化程序;

Nhibernate 恩希伯内特的悲哀。调用lock重新附加对象会引发异常;没有:MovieProxy“的持久化程序;,nhibernate,Nhibernate,下面是代码。我把它简化为零。基本上,我打开一个会话,加载电影,测试锁是否有效,然后退出该项,然后再次尝试锁定它,它会抛出异常。以前有人见过这个吗。如果有人能帮忙,我将不胜感激。没有自定义拦截器或任何东西。Im使用fluent nhibernate映射和nhibernate 3.3.1.4000 var session=SessionFactory.OpenSession() var m=session.Get(movie.Id) session.Lock(m,LockMode.None) 会议.

下面是代码。我把它简化为零。基本上,我打开一个会话,加载电影,测试锁是否有效,然后退出该项,然后再次尝试锁定它,它会抛出异常。以前有人见过这个吗。如果有人能帮忙,我将不胜感激。没有自定义拦截器或任何东西。Im使用fluent nhibernate映射和nhibernate 3.3.1.4000

var session=SessionFactory.OpenSession()

var m=session.Get(movie.Id)

session.Lock(m,LockMode.None)

会议.驱逐(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);

我可以确认这是一个bug,最好将其归档。问题是,为惰性属性生成的代理未实现INHibernateProxy和session。Lock无法识别LazyPropertyProxies