NHibernate显式流畅的列映射

时间:2009-12-14 22:32:56

标签: nhibernate fluent-nhibernate nhibernate-mapping has-many

我有一组流畅的对象映射,如下所示:

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");
    }
}

User是一个连接表,SpecialUser加入其中以获取状态等内容。但是,当我尝试在Directory的SpecialUsers集合中引用SpecialUser时,我收到“Undefined column'Status'”的错误,就像生成的SQL一样,NHibernate尝试从SpecialUser表中获取Status列,而不是User表。 有没有办法明确告诉NHibernate哪个表在DirectoryMapping中获取Status列?

2 个答案:

答案 0 :(得分:0)

User / SpecialUser的Status属性需要映射到数据库中的单个列。有时来自User,有时来自SpecialUser,你不能拥有它。

作为一种解决方法,您可以将SpecialUserStatus属性添加到SpecialUser,然后您可以轻松地查询。

答案 1 :(得分:0)

假设SpecialUser扩展了User,那么映射看起来适合于table-per-subclass映射。我的猜测是这是一个错误。