【问题标题】:Conditionally map two columns to one field with Fluent NHibernate使用 Fluent NHibernate 有条件地将两列映射到一个字段
【发布时间】:2012-05-04 17:51:01
【问题描述】:

我有一个名为 Owner 的 NHibernate 实体,它在数据库中有一个 SSN 列和一个 TaxID 列,我想根据不同的属性,StructureType。因此,如果 StructureType 为“I”,我想将 SSN 值映射到通用属性,如果它的“C”我想将 TaxID 值映射到通用属性。这可能使用 Fluent NHibernate(甚至常规 NHibernate)吗? Owner 实体是只读实体,不会写回数据库。

【问题讨论】:

    标签: nhibernate map conditional fluent


    【解决方案1】:

    我能够使用 Fluent NHibernate 中的公式解决此问题:

    Map(x => x.Identification)
    .Formula("CASE WHEN StructureType = 'I' THEN SSN ELSE TaxID END");
    

    (在我原来的帖子中,我说它介于“I”和“C”之间,但实际上只是介于“I”和其他所有类型之间)

    【讨论】:

      【解决方案2】:

      为什么不添加一个只读属性?

      public string Identification
      {
         get
         {
             string identification = string.Empty;
             if (StructureType.Equals("I"))
                 identification = SSN;
             else if (StructureType.Equals("C"))
                 identification = TaxID;
             return identification;
         }
      }
      

      【讨论】:

      • 这行得通,不过我相信我已经找到了在 NHibernate 中执行此操作的方法,稍后我将在下面详细说明。
      • 我能够使用 Fluent NHibernate 中的公式解决此问题: Map(x => x.Identification).Formula("CASE WHEN StructureType = 'I' THEN SSN ELSE TaxID END"); (在我原来的帖子中,我说它介于“I”和“C”之间,但实际上只是介于“I”和其他所有类型之间)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-01-14
      • 2011-11-20
      • 1970-01-01
      • 2012-02-17
      • 1970-01-01
      • 2011-04-10
      • 1970-01-01
      相关资源
      最近更新 更多