使用Fluent NHibernate有条件地将两列映射到一个字段

时间:2012-05-04 17:51:01

标签: nhibernate map conditional fluent

我有一个名为Owner的NHibernate实体,它在数据库中有一个SSN列和一个TaxID列,我想基于a的值有条件地将这两个值中的一个映射到Owner实体上的更通用的属性。不同的属性,StructureType。因此,如果StructureType为“I”,我想将SSN值映射到通用属性,如果是“C”,我想将TaxID值映射到通用属性。这是否可以使用Fluent NHibernate(甚至常规的NHibernate)? Owner实体是一个只读实体,不会将任何内容写回数据库。

2 个答案:

答案 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;
   }
}