Fluent Nhibernate子层映射HasMany,带有where子句和父类中的列



我有三个实体类:entity、Special和Regular,层次结构如下

public class Entity
{
    public Guid Id { get; set; }
    public bool IsDeleted { get; set; }
}
public class Special : Entity
{
    public IEnumerable<Regular> Regulars { get; set; }
}
public class Regular : Entity
{
}

为了映射这些实体,我使用ClassMap和SubclassMap在我的子类中,我尝试将集合Regulars从实体Special映射为Where子句,如下所示:

public class SpecialMap : SubclassMap<Special>
{
    public SpecialMap()
    {
        HasMany(x => x.Regulars).Where("IsDeleted = 0");
    }
}

但它不起作用,因为当我尝试使用此集合时,会显示错误无效列名"IsDeleted"。看起来nhibernate试图在Regular表中找到IsDeleted列,但在Entity表中没有这样的列。我该怎么办?

PS。可能我解释得不对,这是我的英语水平:)这是一个与我的问题相同的NHibernate显式流畅列映射,但没有有用的答案

public class RegularMap : SubclassMap<Regular>
{
    public RegularMap()
    {
        Table("Regular")
        References(x => x.Special,"SpecialID");
    }
}
public class SpecialMap : SubclassMap<Special>
{
    public SpecialMap()
    {
        HasMany(x => x.Regulars).KeyColumn("SpecialID").Where("IsDeleted = 0");
    }
}

最新更新