.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

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值