2009-12-14 104 views
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扩展用户。我的猜测是这是一个错误。