日期:2014-05-17  浏览次数:20387 次

DateTime需要为空时,如何插入值?
SQL Server中,DateTime可以为null,而C#中不可以。
属性类型我写为DateTime?,有添加和修改功能需要用到这个字段
在Ajax层获取页面数据时,我加了判断,如果获得的字符串长度为0,则值为null。否则获取字符串并转成DateTime类型。
在数据访问层中,我判断,如果获得的属性值为null那么在SQL语句中不添加此属性的参数,否则添加。
但是在运行时,不管有没有值,都会提示找不到方法:“Void Model层命名空间.Model类.set_属性名(System.DateTime)”。

------解决方案--------------------
2L正解。新的语法,可空值类型。如Int32、结构体等这样的类型是不可能为空的,常见的如int,DateTime都是不可能为空的。所以在需要判断是否有值的场合,可以用加问号的可空值类型,如int?,DateTime?这时,可以为空(null),并且可以通过它的HasValue属性来判断是否有值,并通过Value属性获得真正的值。它可以通过对包装类型直接赋值的方式隐式创建,如:int? a=32;