.net 项目TVP批量操作遇到问题
异常信息如下:
1:The conversion of a datetime2 data type to a datetime data typeresulted in an out-of-range value.
2:The data fortable-valued parameter "@TVP_TVPName" doesn‘t conform to thetable type of the parameter,The statement has been terminated.
ps:
DateTime——日期从1753年1月1日到9999年12月31日
DateTime2——日期0001年01月01日到9999年12月31日
实现描述:
获取表中的id主键List<T>列表,通过List列表构造DataTable,TVP批量删除表中指定数量数据
问题描述:
在构造DataTable时,由于只获取了主键id字段,且数据库中涉及如期格式的字段类型为datetime,约束为not null,通过调试发现获得的数据表对象中日期默认值为0001/1/1 0:00:00,超出了datetime的范围,在执行TVP操作前,datatable数据会被序列化传输,此时日期会被序列化为null,导致TVP操作异常
解决方法:
1. 更改数据库日期字段类型为datetiem2
2.获取涉及到日期的所有字段
3. 在构造datatable时,将用到的字段合法初始化,用不到的字段置null
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。