您的位置:首页 > 产品设计 > UI/UE

无法将 DBNull.Value 强制转换为类型“System.DateTime”。请使用可空类型

2010-06-04 14:34 459 查看
取数据库中的数据时,数据库中的字段有可能是空值,虽然Linq中的Field方法和SetField方法都可以处理可以为 null 的类型,不必像前面的示例那样检查 Null 值,我们再用Field将一些可空的值赋给实体的属性时,有可能会报错,因为实体的属性是可空类型,例如:

角色(SmRole)实体有如下可空类型的创建时间的属性

public virtual DateTime? Createdtime
{
get { return _createdtime; }
set { _bIsChanged |= (_createdtime != value); _createdtime = value; }
}

//dsRole为数据集

var roleAllDs =
from role in dsRole.Tables[0].AsEnumerable()
select role;

//创建SmRole实体对象

SmRole smrole = new SmRole();

//遍历数据

foreach (var r in roleAllDs)//dsRole.Tables[0].Rows
{

  //...

  //smrole.Createdtime = r.Field<DateTime>("CREATEDTIME");

  //如上这样取值就会报标题所示的异常,应该改为可空类型,正确的如下

  smrole.Createdtime = r.Field<DateTime?>("CREATEDTIME");//加上可空标识

  //...

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐