首页 文章

NHibernate显式流畅的列映射

提问于
浏览
2

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

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

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

  • 0

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

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

相关问题