我們知道,數據庫中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類型等賦空值。