4

ステートレスセッションで更新を行う際に問題が発生しました。誰かがこのようなものを見たことがないかと思います。(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");
    }

デバッガーをステップスルーすると、statelessSession.Get(id)がプロキシを返していることがわかります。これは正しいです?

誰もが問題が何であるかについて何か考えを持っていますか?あなたの意見や提案を共有してください。

4

1 に答える 1

1

質問で概説したようにテスト プロジェクトを実行しましたが、問題を再現できませんでした。エラーを再現できた唯一のシナリオは次のとおりです。

  1. セッション ファクトリの初期化時にマッピングの場所が指定されていません。

    Fluently.Configure()
      .Mappings(m => m.FluentMappings.AddFromAssemblyOf<SomeEntity>());
    
  2. のプロパティの 1 つがSomeEntityとしてマークされていlazy="no-proxy"ます。詳細については、こちらをご覧ください

于 2013-03-09T18:58:07.417 に答える