2

我有一組流暢的對象映射的,看起來像這樣:NHibernate的明確流利列映射

public class UserMap : ClassMap<User> 
{ 
    public UserMap() 
    { 
     Map(x => x.Id); 
     Map(x => x.Status); 
    } 
} 

public class SpecialUserMap : SubClassMap<SpecialUser> 
{ 
    public SpecialUserMap() 
    { 
     Map(x => x.Property); 
    } 
} 

public class DirectoryMap : ClassMap<Directory> 
{ 
    public DirectoryMap 
    { 
     Map(x => x.Id); 
     HasMany(x => x.SpecialUsers).Where("Status = 0"); 
    } 
} 

用戶是一個連接表,其中SpecialUser地加入反對把事情般的地位。但是,當我嘗試在目錄的SpecialUser集合中引用SpecialUser時,出現「未定義列狀態」錯誤,如在生成的SQL中,NHibernate嘗試從SpecialUser表獲取狀態列,而不是用戶表。 有沒有辦法明確告訴NHibernate哪個表得到DirectoryMapping中的Status列?

回答

0

User/SpecialUser的Status屬性需要映射到數據庫中的單個列。你有時不能從用戶那裏得到,有時來自SpecialUser。

作爲解決方法,您可以將SpecialUserStatus屬性添加到SpecialUser,然後您可以輕鬆地進行查詢。

+0

下面的數據庫只有一個狀態列,位於用戶表中。 – intervigil 2009-12-15 01:06:26

0

映射看起來是正確的table-per-subclass映射,假設SpecialUser擴展用戶。我的猜測是這是一個錯誤。