无法将 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");//加上可空标识
//...
}
角色(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");//加上可空标识
//...
}
相关文章推荐
- DBNull.Value 强制转换为类型“System.DateTime”。请使用可空类型
- 从EXCEL导入文件时无法将DBNull.Value强制转换为类型。。。,请使用可空类型 问题的解决
- C# 无法将类型为“System.DBNull”的对象强制转换为类型“System.String”。
- 错误:无法将类型为“System.DBNull”的对象强制转换为类型“System.Byte[]”。
- 无法将类型为“System.DBNull”的对象强制转换为类型“System.String”分析及解决方案
- NotSupportedException-无法将类型“System.DateTime”强制转换为类型“System.Object”
- 无法将类型为“System.DBNull”的对象强制转换为类型“System.String”。
- NotSupportedException-无法将类型“System.DateTime”强制转换为类型“System.Object”
- 无法将类型为“System.DBNull”的对象强制转换为类型“System.Byte[]”
- 无法将类型为“System.DBNull”的对象强制转换为类型“System.String”
- c#:无法将类型为“System.DBNull”的对象强制转换为类型“System.String”
- C#.NET开发Winform使用MySQL数据库 无法将“System.Byte[]”的对象强制转换为类型“System.IConvertible”
- OPC客户端调用时提示“无法将类型为“System.__ComObject”的 COM 对象强制转换为接口类型”...
- 无法确定条件表达式的类型,因为“<null>”和“System.DateTime”之间没有隐式转换 解决办法
- 保存图片控件上的图片到本地 出现错误:无法将类型为“System.Windows.Media.Imaging.BitmapFrameDecode”的对象强制转换为类型“System.Windows.Media.Imaging.BitmapImage”。
- c # xml操作 (无法将类型为“System.Xml.XmlComment”的对象强制转换为类型“System.Xml.XmlElement”)
- 关于MVC中无法将类型为“System.Int32”的对象强制转换为类型“System.String”的问题。
- 出现无法将System.Web.UI.LiteralControl”的对象强制转换为类型“System.Web.UI.WebControls.DropDownList的解决方法
- 无法将类型为“System.__ComObject”的 COM 对象强制转换为接口类型,原因为没有注册类
- 无法将 NULL 转换成“System.DateTime”,因为它是一种值类型