我有一组流畅的对象映射,如下所示:
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列?
答案 0 :(得分:0)
User / SpecialUser的Status属性需要映射到数据库中的单个列。有时来自User,有时来自SpecialUser,你不能拥有它。
作为一种解决方法,您可以将SpecialUserStatus属性添加到SpecialUser,然后您可以轻松地查询。
答案 1 :(得分:0)
假设SpecialUser扩展了User,那么映射看起来适合于table-per-subclass映射。我的猜测是这是一个错误。