我在使用抽象類NHibernate的,自動映射和鏈接抽象類
這是一個類似於此
public abstract class AbstractClassA {}
public abstract class AbstractClassB : AbstractClassA {}
public class ClassA : AbstractClassB {}
當我嘗試的多條鏈使用NHibernate類結構的一些麻煩,自動映射和構建這些映射,我收到以下錯誤
「FluentNHibernate.Cfg.FluentConfigurationException未處理 消息:創建SessionFactory時使用了無效或不完整的配置。請參閱PotentialReasons集合和InnerException以獲取更多詳細信息。
- 數據庫不是通過數據庫的方法進行配置。」
但是,如果我刪除AbstractClassB抽象的關鍵詞,一切工作正常。這個問題只有當我有一個以上的抽象類中發生類層次結構。
我手工配置的自動映射爲包括AbstractClassA和AbstractClassB使用下面的結合類
public class BindItemBases : IManualBinding
{
public void Bind(FluentNHibernate.Automapping.AutoPersistenceModel model)
{
model.IncludeBase<AbstractClassA>();
model.IncludeBase<AbstractClassB>();
}
}
我不得不做一些黑客來解決這個問題,但是必須有更好的方法來實現這個目標。當然nHibernate支持這樣的東西,我只是沒有想出如何正確配置它。
乾杯,
詹姆斯
我想包括他們,因爲有幾個不同的類從他們派生。如果我刪除了摘要,所有的東西都可以正常工作,但我寧願不這樣做。如果我不包含基礎,那麼派生類將分別獲得它們自己的表。我不想那樣。如果我從AbstractClassA直接派生ClassA,那麼事情就是按照我想要的方式工作的。當我在中間添加AbstractClassB時,它會翻倒。 – 2010-04-03 05:42:00
爲什麼不直接從映射中排除AbstractClassB,而將其作爲基類放置? – 2010-04-03 06:02:10
如果我從映射中排除AbstractClassB,我得到一個映射異常,'從表ClassA的關聯引用一個未映射的類:AbstractClassB' – 2010-04-03 09:20:06