.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

告诉自己,我这次失败了,重新开始吧!下次我会吸取教训,不让自己犯同样的错误的

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

相关文章:

你感兴趣的文章:

标签云: