【问题标题】:NHibernate explicit fluent column mappingNHibernate 显式流利的列映射
【发布时间】:2010-12-26 14:45:47
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 下面的数据库只有一个Status列,在User表中。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-26
      • 1970-01-01
      相关资源
      最近更新 更多