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