【发布时间】:2010-03-19 23:05:27
【问题描述】:
这是一个入门列表:
- 如果 hbm 是手动生成的,它是嵌入式资源吗?
- 如果使用 FNH,它是否通过了 PerssistenceSpecification 测试?
- 如果不使用 FNH,是否可以保存并加载持久化类?
- 使用 Ayende 的"sanity checks"
我敢肯定,你们中的许多人都曾在某个时候得到过这个。但是,当您知道您的映射设置正确时,您有没有得到它?
在我开始使用新的存储库设计后,我开始收到此异常,但仅在一种情况下! PersistenceSpecification 测试通过,所有存储库方法(使用 SQLite)也通过。
导致异常的情况是来自不同数据库的遗留项目转换为绿地系统。遗留系统来自不同的数据库,并且有自己的会话工厂,这应该是无关紧要的,因为错误是在检索到以前未转换的项目并在内存中之后出现的。
当例程尝试将这些未转换的项目保存到新数据库中时,抛出异常,下面是完整的堆栈跟踪。
关于如何建立故障排除清单并解决此问题的任何想法?
干杯, 贝瑞尔
=== 异常跟踪 =====
failed: NHibernate.MappingException : No persister for: Smack.ConstructionAdmin.Domain.Model.Projects.Project
at NHibernate.Impl.SessionFactoryImpl.GetEntityPersister(String entityName)
at NHibernate.Impl.SessionImpl.GetEntityPersister(String entityName, Object obj)
at NHibernate.Engine.ForeignKeys.IsTransient(String entityName, Object entity, Nullable`1 assumed, ISessionImplementor session)
at NHibernate.Event.Default.AbstractSaveEventListener.GetEntityState(Object entity, String entityName, EntityEntry entry, ISessionImplementor source)
at NHibernate.Event.Default.DefaultSaveOrUpdateEventListener.PerformSaveOrUpdate(SaveOrUpdateEvent event)
at NHibernate.Event.Default.DefaultSaveOrUpdateEventListener.OnSaveOrUpdate(SaveOrUpdateEvent event)
at NHibernate.Impl.SessionImpl.FireSaveOrUpdate(SaveOrUpdateEvent event)
at NHibernate.Impl.SessionImpl.SaveOrUpdate(Object obj)
NHibernate\Repository\FabioNHibRepository.cs(46,0): at Smack.Core.Data.NHibernate.Repository.FabioNHibRepository`1.Add(T item)
LegacyConversion\LegacyBatchUpdater.cs(20,0): at Smack.ConstructionAdmin.Data.LegacyConversion.LegacyBatchUpdater.ConvertOpenLegacyProjects(ILegacyProjectDao legacyProjectDao, IProjectRepository greenProjectRepository)
Data\Brownfield\ProjectBatchUpdate_SQLiteTests.cs(19,0): at Smack.ConstructionAdmin.Tests.Data.Brownfield.ProjectBatchUpdate_SQLiteTests.Test()
【问题讨论】:
标签: nhibernate debugging nhibernate-mapping