2011-10-03 62 views
3

查詢可以說我有兩類:功能NHibernate - 在派生類中

public class A 
{ 
    public virtual int Id { get; set; } 
    public virtual Object1 Obj { get; set; } 
} 

public class B : A 
{ 
    public new virtual Object2 Obj { get; set; } 
} 

我用流利的NHibernate和我創建了兩個類兩種不同的映射。然而,當我嘗試查詢類A在我的倉庫,FNH同時找到B類和A,哪一種是有道理的,因爲兩者都是A.

例(該標準將查詢在A和B):

public List<T> GetByName(string name) 
{ 
    return Session.CreateCriteriaOf<A>.Add(Restrictions...); 
} 

CreateCriteriaOf<A>時,我只想查詢A - 而不是B.我該如何解決我的問題?

回答

3

我想你最好製作一個繼承樹,其中A和B都來自一個公共(抽象)基類型。然後NHibernate可以通過discriminator column來區分。

當然,你的數據模型應該適應這個,所以我希望你的模型沒有任何規定。