运行VS2003,nHB 3.0.0.3001,尝试通过Gallio 3.2运行单元测试.代码来自"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)
Run Code Online (Sandbox Code Playgroud)
我没有受过教育的猜测是,无法看到Customer类.但是单元测试和数据访问层都引用了包含Customer类的DataTransfer程序集.Customer类是公共的,所有属性都是公共虚拟的.
nHB配置文件位于目录中,Customer映射文件是嵌入式资源.似乎在线失败:
return session.Get<Customer>(customerId);
Run Code Online (Sandbox Code Playgroud)
Bob*_*mer 27
确保映射文件名为*.hbm.xml
确保将其设置为嵌入式资源.
如果这些失败,调试并且失败时,捕获异常并查看InnerException - NHibernate在那里隐藏了很棒的错误消息.
希望那些帮助 - 否则我们可以考虑一些其他选项(但1和2解决了90%的持久性问题)
| 归档时间: |
|
| 查看次数: |
22233 次 |
| 最近记录: |