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 时,我收到“未定义列'状态'”的错误,因为在生成的 SQL 中,NHibernate 尝试从 SpecialUser 表中获取状态列,而不是用户表. 有没有办法明确告诉 NHibernate 哪个表获取 DirectoryMapping 中的 Status 列?

4

2 回答 2

0

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

作为一种解决方法,您可以向 SpecialUser 添加一个 SpecialUserStatus 属性,然后您就可以轻松地对其进行查询。

于 2009-12-15T00:51:25.537 回答
0

假设 SpecialUser 扩展了 User,该映射看起来适合每个子类的表映射。我的猜测是这是一个错误。

于 2009-12-15T01:21:22.527 回答