运行VS2003,nHB 3.0.0.3001,尝试通过Galio3.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) 我非常没有经验的猜测是Customer类是看不见的。但是单元测试和数据访问层都引用了包含Customer类的DataTransfer程序集。Customer类是公共的,所有属性都是公共虚拟的。
nHB配置文件位于目录中,客户映射文件是嵌入式资源。似乎在线路上失败了:
return session.Get<Customer>(customerId);发布于 2010-12-03 19:07:23
希望这些方法能帮上忙--否则我们可以看看其他的选择(但是1和2可以解决90%的持久问题)
发布于 2013-03-16 04:25:38
我使用ActiveRecord进行实体映射,在尝试使用ISession.Get而不是使用配置来检索会话时,得到了相同的错误,如下所示:
ISession session = new NHibernate.Cfg.Configuration()
.Configure()
.AddAssembly(typeof(Account).Assembly)
.SetInterceptor(new SqlStatementInterceptor())
.BuildSessionFactory().OpenSession();我将其更改为通过ActiveRecordMediator工作:
ISession session = Castle.ActiveRecord.ActiveRecordMediator
.GetSessionFactoryHolder().
CreateSession(typeof(Castle.ActiveRecord.ActiveRecordBase));现在它工作得很好..
发布于 2016-08-13 22:24:17
在hibernate.cfg.xml文件中,添加以下代码:
<mapping assembly="(name of your Assembly Project)" />基本上,在你的代码中它是:
<mapping assembly="DataTransfer" />https://stackoverflow.com/questions/4344859
复制相似问题