.net 项目TVP批量操作遇到问题

异常信息如下:

1The 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

 

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。