【问题标题】:Fluent NHibernate mapping: QuantLib.Date and Mysql's DateFluent NHibernate 映射:QuantLib.Date 和 Mysql 的 Date
【发布时间】:2013-12-18 14:37:27
【问题描述】:

我在 C# 项目中使用 QuantLib 的 Date 类,当尝试将我的 Price 类映射到 mySql 数据库中的 price 表时,这会导致一些问题。

price 表包含三列:[id][date][value],代码如下所示:

//ENTITY
    public class Price{
        public virtual long id { get; protected set; }
        public virtual QuantLib.Date date { get; set; }
        public virtual double value{ get; set; }
    }

//MAPPING
    public PriceMap() {
        Table("price");
        Id(x => x.id, "id");
        Map(x => x.date, "date") // to be completed... ;
        Map(x => x.value, "value");
    }

有没有办法指定 NHibernate 如何使用 Fluent NHibernate 将此类映射到 MySQL 的 Date 类型?在保存或从数据库中检索之前进行某种类型的转换,而无需更改实体的结构。

【问题讨论】:

    标签: c# mysql nhibernate fluent-nhibernate nhibernate-mapping


    【解决方案1】:

    你有两个选择

    1. 为 nhibernate 创建一个自定义类型,并在映射中将其指定为 .CustomType。因此,您必须实现一个小接口,用于与QuantLib.Date 之间的转换

    2. 您只需将日期属性的类型更改为 System.DateTime 并添加另一个可读取/写入日期属性但使用您的 QuantLib.Date 的属性, 伪代码:

      public QuantLib.Date QDate {
         get{
           // read from this.date and create a new QuantLib.Date
         }
         set{
           // write to this.date
         }
      }
      

    【讨论】:

    • 谢谢,我选择了第二个选项。不过我想了解更多关于选项 1,如何为 NHibernate 指定自定义类型?
    • 你只需要实现IUserType,在这里找到一个例子stackoverflow.com/questions/242022/…
    猜你喜欢
    • 2011-04-10
    • 2012-10-19
    • 1970-01-01
    • 2011-06-18
    • 2012-04-03
    • 1970-01-01
    • 1970-01-01
    • 2013-01-07
    • 2013-04-04
    相关资源
    最近更新 更多