【问题标题】:NHibernate.MappingException - Trouble Shooting Checklist (no persister for)NHibernate.MappingException - 故障排除清单(没有持久性)
【发布时间】:2010-03-19 23:05:27
【问题描述】:

这是一个入门列表:

  1. 如果 hbm 是手动生成的,它是嵌入式资源吗?
  2. 如果使用 FNH,它是否通过了 PerssistenceSpecification 测试?
  3. 如果不使用 FNH,是否可以保存并加载持久化类?
  4. 使用 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


    【解决方案1】:

    这里的问题原来是我无意中将相同的会话上下文绑定到遗留和新建数据库会话工厂,先绑定到新建数据库,然后绑定到遗留数据库。

    【讨论】:

      猜你喜欢
      • 2014-01-22
      • 2010-09-08
      • 1970-01-01
      • 2010-09-23
      • 1970-01-01
      • 2019-09-15
      • 2023-03-21
      • 1970-01-01
      • 2013-07-15
      相关资源
      最近更新 更多