【问题标题】:Mapping multiple columns to an array with NHibernate使用 NHibernate 将多列映射到数组
【发布时间】:2011-08-20 04:53:05
【问题描述】:

我有一个无法更改的旧数据库,我目前正在使用 NHibernate。
问题是我有一个包含多列的表,我想将它们映射到一个数组中。

表格 身份证
价格1
价格2
价格3
价格4
[...]

课程如下:

public class MyClass {
  public int Id { get; set; }
  public decimal[] Prices { get; set; }
}

有可能吗?
我只能读取数据,实际上不需要设置/保存该属性。
我尝试了很多映射,但找不到答案。

【问题讨论】:

    标签: c# nhibernate mapping legacy


    【解决方案1】:

    嗯,这只是一种解决方法,而且很脏,但我认为它可能会起作用:

    public class MyClass {
      public virtual int Id { get; set; }
      protected virtual decimal Price1 { get; set; }  
      protected virtual decimal Price2 { get; set; }  
      protected virtual decimal Price3 { get; set; }  
    //...
      public decimal[] Prices 
      { get 
        {
          return new decimal[] {Price1, Price2, Price3};
        }
      }
    }
    

    但是,使用 NH 的映射能力可能会有一个更复杂的答案,我不知道。

    【讨论】:

    • 我不会称之为“相当肮脏” - 这是一个非常标准的包装器属性。
    • 嗨,这是我的第一个解决方案,但不幸的是它不适合,因为列可能会有所不同,我只想更改映射 XML,最好不要更改代码。还是谢谢!
    • 如何使用接受列列表的自定义用户类型?这将很难实施,但也许它应该适合我的需要。无论如何,似乎没有“简单”的方法可以做到这一点......
    • 这可能有效。我认为您不能通过它的 c'tor 将列传递给它(因为它是从 NH 内部调用的),但您可以将其设置为从某个配置文件或类似文件中读取。这是一个很好的入门示例,如果您需要一个-intellect.dk/post/Implementing-custom-types-in-nHibernate.aspx
    猜你喜欢
    • 1970-01-01
    • 2012-07-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-17
    • 1970-01-01
    • 2014-06-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多