2010-11-08 43 views
2

我有以下情形:繼承與功能NHibernate產生雙重結果

public class Login 
{ 
    public virtual int Id { get; set; } 
    public virtual string Username { get; set; } 
} 

public class User : Login 
{ 
    public IList<Account> Accounts { get; set; } 
} 

如果我有兩個地圖(ClassMap<Login>ClassMap<User>),所有的查詢返回結果雙 - 每個地圖我猜之一。

可以避免這種情況嗎?我沒有鑑別值。用戶有更多的屬性,所以我希望能夠通過登錄獲得這些屬性的子集。

+0

哪個查詢,例如? – 2010-11-08 14:41:47

回答

4

由於用戶擴展登錄,查詢登錄將默認返回用戶實例。

爲避免這種情況,必須在XML映射中使用polymorphism="explicit"

對於流利的映射,請使用Polymorphism.Explicit()

+0

它由流利的nhibernate支持。 – 2010-11-08 14:55:44

+0

請告訴我相應的方法,以便將其添加到我的答案中。 – 2010-11-08 15:26:15

+0

Polymorphism.Explicit() – 2010-11-08 19:18:23

0

或許指定爲兩個實體LoginUser可能做的伎倆不同的數據表,所以你必須明確地查詢或者根據您的需求LoginUser。否則,Diego Mijelshon的回答聽起來很不錯!