VS2003、nHB 3.0.0.3001を実行し、Gallio 3.2を使用して単体テストを実行しようとしました。このコードは、 "Summer of nHibernate"の最初のセッションからのものです。テストを実行しようとすると、次のエラーが表示されます。nHibernate:ペリスターを見つけることができません
NHibernate.HibernateException: Unable to locate persister: DataTransfer.Customer
TargetSite: Void OnLoad(NHibernate.Event.LoadEvent, NHibernate.Event.LoadType)
HelpLink: null
at NHibernate.Event.Default.DefaultLoadEventListener.OnLoad(LoadEvent event, LoadType loadType)
at NHibernate.Impl.SessionImpl.FireLoad(LoadEvent event, LoadType loadType)
at NHibernate.Impl.SessionImpl.Get(String entityName, Object id)
at NHibernate.Impl.SessionImpl.Get(Type entityClass, Object id)
at NHibernate.Impl.SessionImpl.Get[T](Object id)
at DataAccessLayer.NhibernateDataProvider.GetCustomerById(Int32 customerId)
私の非常に教育されていない推測は、顧客クラスが見えないということです。しかし、単体テストとデータアクセスレイヤの両方には、Customerクラスを保持するDataTransferアセンブリへの参照があります。 Customerクラスはpublicであり、すべてのプロパティはpublic virtualです。
nHB設定ファイルはディレクトリにあり、顧客マッピングファイルは埋め込みリソースです。 行に失敗しているようだ:.hbm.xml
*あなたのマッピングファイルの名前されていることを確認し
return session.Get<Customer>(customerId);
- について項目2、スタジオのXMLファイルのプロパティを見て、それは一番上のコンボボックスです(デフォルトはコピーしないで、Studioは開いていないと思います)。 –
はい、ヘルプのおかげで、hbm.xmlではなくhbn.xmlという名前のマッピングファイルが作成されました。 –
あなたのリストに2.5を追加して、あなたの工場を作るときにマッピングアセンブリをロードしていることを確認してください。 –