我有一个名为Owner的NHibernate实体,它在数据库中有一个SSN列和一个TaxID列,我想基于a的值有条件地将这两个值中的一个映射到Owner实体上的更通用的属性。不同的属性,StructureType。因此,如果StructureType为“I”,我想将SSN值映射到通用属性,如果是“C”,我想将TaxID值映射到通用属性。这是否可以使用Fluent NHibernate(甚至常规的NHibernate)? Owner实体是一个只读实体,不会将任何内容写回数据库。
答案 0 :(得分:3)
我能够使用流利的NHibernate中的公式来解决这个问题:
Map(x => x.Identification)
.Formula("CASE WHEN StructureType = 'I' THEN SSN ELSE TaxID END");
(在我原来的帖子中,我说它介于'我'和'C'之间,但事实上恰好介于'我'和其他所有类型之间)
答案 1 :(得分:1)
为什么不添加只读属性?
public string Identification
{
get
{
string identification = string.Empty;
if (StructureType.Equals("I"))
identification = SSN;
else if (StructureType.Equals("C"))
identification = TaxID;
return identification;
}
}