我有一个问题做更新与无状态会话,我是不知道有没有人见过这样的东西。(NHibernate 3.1)。
我基本上是这样做的:
SomeEntity e = statelessSession.Get<SomeEntity>(id);
e.SomeProperty = "a new value";
statelessSession.Update(e);
,我得到以下错误:
NHibernate.MappingException: No persister for:
Castle.Proxies.SomeEntityProxy
at NHibernate.Impl.SessionFactoryImpl.GetEntityPersister(String
entityName)
at NHibernate.Impl.StatelessSessionImpl.GetEntityPersister(String
entityName, Object obj)
at NHibernate.Impl.StatelessSessionImpl.Update(String entityName,
Object entity)
at NHibernate.Impl.StatelessSessionImpl.Update(Object entity)
映射-
class SomeEntityMap : ClassMap<SomeEntity>
{
public SomeEntityMap()
{
Table("Some_Entity");
Id(x => x.ID).Column("ID");
Map(x => x.Name).Column("NAME");
}
我已经在调试器中进行了调试,可以看到get (id)返回一个代理。这是正确吗?
有人知道是什么问题吗?请分享你的意见和建议。我做了一个测试项目,正如你在问题中概述的那样,无法重现这个问题。我能够重现错误的唯一场景是:
-
在初始化会话工厂时没有指定映射的位置,即您缺少
Fluently.Configure() .Mappings(m => m.FluentMappings.AddFromAssemblyOf<SomeEntity>());
-
将
SomeEntity
的一个性质标记为lazy="no-proxy"
。