2013-12-18 53 views
0

我使用的C#項目QuantLib的Date類,而這個嘗試我Price類映射到我的price表在MySQL數據庫時,會導致一些問題。功能NHibernate映射:QuantLib.Date和MySQL的日期

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如何映射這個類,MySQL的Date類型,用流利的方式NHibernate的?在保存或修改數據庫之前對它進行排序,而不必更改實體的結構。

回答

0

你有兩個選擇

  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 
        } 
    } 
    
+0

謝謝,我選擇了第二個選項。不過,我想知道更多關於選項1,如何爲NHibernate指定自定義類型? – uness

+0

你只需要實現IUserType,在這裏找到一個例子http://stackoverflow.com/questions/242022/nhibernate-mapping-to-custom-types – MichaC