在此之前,请先查看问题列表:
1、NHibernate,添加数据出错
2、NHibernate,能否给一个字段修改为null值?

示例表结构如下:
NHibernate,处理字段NULL值的问题CREATE TABLE [userinfo] (
NHibernate,处理字段NULL值的问题    
[id] [int] IDENTITY (11NOT NULL ,
NHibernate,处理字段NULL值的问题    
[name] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
NHibernate,处理字段NULL值的问题    
[sex] [bit] NULL CONSTRAINT [DF_userinfo_sex] DEFAULT (1),
NHibernate,处理字段NULL值的问题    
[hit] [int] NULL CONSTRAINT [DF_userinfo_hit] DEFAULT (0),
NHibernate,处理字段NULL值的问题    
[birthday] [smalldatetime] NULL ,
NHibernate,处理字段NULL值的问题    
[regdate] [smalldatetime] NULL CONSTRAINT [DF_userinfo_regdate] DEFAULT (getdate()),
NHibernate,处理字段NULL值的问题    
CONSTRAINT [PK_userinfo] PRIMARY KEY  CLUSTERED 
NHibernate,处理字段NULL值的问题    (
NHibernate,处理字段NULL值的问题        
[id]
NHibernate,处理字段NULL值的问题    )  
ON [PRIMARY] 
NHibernate,处理字段NULL值的问题
ON [PRIMARY]
NHibernate,处理字段NULL值的问题
GO

问题描述:
 
  因为 birthday 在数据库里是“smalldatetime”类型,所以我们在创建表实体、以及xml映射的时候,可能会把 birthday 的类型设置为“DateTime”。但是经过这样的设置后,可能会出现以下错误提示:

NHibernate,处理字段NULL值的问题SqlDateTime 溢出。必须介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM 之间。 
NHibernate,处理字段NULL值的问题说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 
NHibernate,处理字段NULL值的问题 
NHibernate,处理字段NULL值的问题异常详细信息: System.Data.SqlTypes.SqlTypeException: SqlDateTime 溢出。必须介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM 之间。
NHibernate,处理字段NULL值的问题

解决方法:
 
  当库中的字段为 DateTime 类型的时候,我们在创建表实体、以及xml映射的时候,应该将类型设置为“String”。像这样:
NHibernate,处理字段NULL值的问题public string Birthday
}

NHibernate,处理字段NULL值的问题<property name="Name" column="name" type="String" length="50" />
NHibernate,处理字段NULL值的问题
<property name="Sex" column="sex" type="Boolean" length="1" />
NHibernate,处理字段NULL值的问题
<property name="Hit" column="hit" type="Int32" length="4" />
NHibernate,处理字段NULL值的问题
<property name="Birthday" column="birthday" type="String" length="50" />

  后台处理:
NHibernate,处理字段NULL值的问题private void Button2_Click(object sender, EventArgs e)
}

在此致谢:
 
  感谢小朱在QQ群“郑州dotNET俱乐部”中的指点!

相关文章: