我是新來的(流利)NHibernate和有一個問題:Fluenthibernate映射繼承/子類
我下面的類結構:
<!-- language: c# -->
public class JAccount
{
public virtual long Id { get; private set; }
//some properties
public virtual JProfile Profile { get; set; }
}
public class JProfile
{
public virtual long Id { get; set; }
//some more properties
public virtual int Age { get; set; }
}
我映射後就正常了這些類..
<!-- language: c# -->
public class JProfileMap : ClassMap<JProfile>
{
public JProfileMap()
{
Id(x => x.Id).Unique().GeneratedBy.Assigned();
//some more property mappings
}
}
然後我想,我在這些實體類中有很多邏輯(方法),我想爲它們中的每一個都創建一個新的類,並從基類繼承並將所有邏輯存儲到它中。 所以,我不喜歡的東西:
<!-- language: c# -->
public class TestAccount : JAccount
{
//all properties which did not need to be mapped into the DB
//as well as methods
}
//did the same for JProfile
問題是現在,當我加載從數據庫中的一個JAccount和我丟在TestAccount 並試圖挽救回來,我因爲FluentHibernate沒有得到一個異常映射爲TestAcccount
我的問題是現在:我真的需要SubClassMap這個新類嗎?我不想/需要將它們映射到數據庫中,因爲他們所做的只是從其基類中取出logik。是否有不同的方式來完成這個?
感謝所有幫助
它是不可能有實例化一個'JAccount'並轉換爲'TestAccount'。你能澄清你在這裏做什麼嗎? – Jay 2012-03-02 01:42:22
就像我說過的,我想保留映射的基類儘可能簡單。有JUST屬性,另一個類從這個基類繼承,實現所有其他的東西像方法..所以我有'TestAccount'類繼承自'JAccount'與方法像'Register()',但這些類沒有映射,因爲他們沒有需要存儲在數據庫中的屬性/信息,它們只用方法擴展基類......但是當我嘗試更新/保存並且實例化這些類時,我從Fluenthibernate中得到錯誤:( – Thomas 2012-03-02 03:26:43
你可以以相反的方式做到這一點,告訴nhibernate忽略基類例如'Profile:Entity'告訴nhibernate忽略'Entity',但是有沒有辦法去做oposite,忽略profile和save/cast到實體? = D – Thomas 2012-03-02 03:34:07