首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >nHibernate:找不到persister

nHibernate:找不到persister
EN

Stack Overflow用户
提问于 2010-12-03 18:59:23
回答 3查看 25.6K关注 0票数 8

运行VS2003,nHB 3.0.0.3001,尝试通过Galio3.2运行单元测试。代码来自“nHibernate之夏”的第一次会议。我在尝试运行测试时遇到以下错误。

代码语言:javascript
运行
复制
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类是看不见的。但是单元测试和数据访问层都引用了包含Customer类的DataTransfer程序集。Customer类是公共的,所有属性都是公共虚拟的。

nHB配置文件位于目录中,客户映射文件是嵌入式资源。似乎在线路上失败了:

代码语言:javascript
运行
复制
return session.Get<Customer>(customerId);
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-12-03 19:07:23

  1. 确保将映射文件命名为*.hbm.xml
  2. 确保将其设置为嵌入式资源。
  3. 如果这些操作失败,则进行调试,如果失败,则捕获异常并查看InnerException - NHibernate在其中隐藏了奇妙的错误消息。

希望这些方法能帮上忙--否则我们可以看看其他的选择(但是1和2可以解决90%的持久问题)

票数 28
EN

Stack Overflow用户

发布于 2013-03-16 04:25:38

我使用ActiveRecord进行实体映射,在尝试使用ISession.Get而不是使用配置来检索会话时,得到了相同的错误,如下所示:

代码语言:javascript
运行
复制
                     ISession session = new NHibernate.Cfg.Configuration()
                    .Configure()
                    .AddAssembly(typeof(Account).Assembly)
                    .SetInterceptor(new SqlStatementInterceptor())
                    .BuildSessionFactory().OpenSession();

我将其更改为通过ActiveRecordMediator工作:

代码语言:javascript
运行
复制
                    ISession session = Castle.ActiveRecord.ActiveRecordMediator
                    .GetSessionFactoryHolder().
                    CreateSession(typeof(Castle.ActiveRecord.ActiveRecordBase));

现在它工作得很好..

票数 0
EN

Stack Overflow用户

发布于 2016-08-13 22:24:17

在hibernate.cfg.xml文件中,添加以下代码:

代码语言:javascript
运行
复制
 <mapping assembly="(name of your Assembly Project)" />

基本上,在你的代码中它是:

代码语言:javascript
运行
复制
 <mapping assembly="DataTransfer" />
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4344859

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档