2010-03-19 29 views
2

這裏的首發名單:NHibernate.MappingException - 問題解答清單(不留存於)

  1. 如果產生HBM手,它是一個嵌入式的資源?
  2. 如果使用FNH,它是否通過PerssistenceSpecification測試?
  3. 如果不使用FNH,你能保存然後加載持久化的類嗎?
  4. 使用Ayende的"sanity checks"

我敢肯定,你們中許多人已經得到了這一個在一個點或另一個。但你有沒有得到它,當你知道您的映射設置正確?

我開始使用新的存儲庫設計後纔開始出現此異常,但僅在一種情況下! PersistenceSpecification測試通過,所有存儲庫方法(使用SQLite)也一樣。

導致異常的場景是將來自不同數據庫的舊項目轉換爲綠色現場系統時。遺留系統來自不同的數據庫,並擁有自己的會話工廠,這應該是不相關的,因爲錯誤是在先前未轉換的項目被檢索並存儲在內存中之後發生的。

由於例程嘗試將這些未轉換的項目保存到新數據庫中,因此會引發異常,請參閱下面的完整堆棧跟蹤。

有關如何構建故障排除檢查清單並解決此問題的任何想法?

乾杯, Berryl

===異常跟蹤=====

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() 

回答

0

這裏的問題竟然是,我是無意中結合與原有的同一個會話的上下文和綠地數據庫會話工廠,首先到綠地,然後是遺產。