我有三个实体类: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");
}
}