[轉]NHibernate中DateTime,int,bool空值的處理方法

原文: http://zsy.cnblogs.com/archive/2006/03/14/312488.html

我們知道,數據庫中DateTime子段允許爲空(null)。當我們在ASP.NET中映射爲DateTime是就不允爲空了。該怎麼處理?基本有兩種辦法:
(1)修改.hbm.xml文件中的類型,該"DateTime"爲"String",該實體文件中的屬性類型"DateTime"爲"String"。
    處理的時候,該屬性值要麼爲空,要麼是具有正確日期格式的字符串。
  該方法只適合DateTime類型,而對int,bool類型就不適應了。下面就看第二種方法。
(2)Nullables處理
    (1)添加引用:Nullables.dll與Nullables.NHibernate.dll
    (2)修改配置文件.hbm.xml對應的類型,如:
   <property name="InDate" column="inDate" type="DateTime"/>修改爲:
   <property name="InDate" column="inDate" type="Nullables.NHibernate.NullableDateTimeType,Nullables.NHibernate"/>
    (3)修改實體類文件,如:
    private DateTime _inDate;
      /// <summary>
      /// 添加日期
      /// </summary>
      public DateTime InDate
      {
           get { return _inDate; }
           set { _inDate = value;
     }   修改爲:
     private Nullables.NullableDateTime _InDate;
      /// <summary>
      /// 添加日期
      /// </summary>
      [NHibernate.Mapping.Attributes.Property]
      public Nullables.NullableDateTime InDate
      {
           get { return _InDate; }
           set { _InDate = value; }
      }
     (4)給屬性InDate賦值:
        Item clsItem = new Item();
        clsItem.InDate = new NullableDateTime(System.DateTime.Now);
        如果要輸入空值,如:clsItem.InDate = nulll;

     (5)獲取屬性InDate的值:
        ItemCRUD clsCRUD = new ItemCRUD();  //對實體類的操作
        Item clsItem = clsCRUD.ItemDetails(id);  //獲取實體類
        this.txtInDate.Text = clsItem.InDate.ToString();
       
        通過第二種方法可以對數據庫中對應的整形、bool類型等賦空值。
發佈了7 篇原創文章 · 獲贊 0 · 訪問量 3006
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章