我正在使用我的自定义CSVDataReader:IDataReader {}在数据库表中插入批量值。
每个数据类型,但Bit(来自“1”/“0”)都被完美地解析。我收到以下错误 “数据源中String类型的值无法转换为类型位”,而将0或1解析为bool
如果我将这些值更改为“true”/“false”。它没有任何问题。
我无法更改CSV文件。目前,我在迭代期间将该特定列从“0”/“1”替换为“false”/“True”。但这不是一个优雅的解决方案。
请帮忙!
由于 Panks
答案 0 :(得分:0)
我猜你发送"1"
和"0"
而不是1
和0
仅供参考,SQL Server将接受true
和false
位
答案 1 :(得分:0)
我遇到了类似的问题,其中IEnumerable
的匿名类型无法填充我的数据库表。结果发现DataTable
中字段的顺序与数据库表中列的顺序不匹配。在这一点上,我不明白为什么列的顺序很重要,因为可以使用列名正确匹配它们。
无论如何,我的列不匹配是使用FastMember
NuGet程序包来快速填充DataTable
的副作用,它会按字母顺序对引擎盖进行排序!解决方案是将我的匿名类型替换为一个小的声明的类,该类在其属性上使用Ordinal
属性:
public class Row
{
[Ordinal(0)] public string ColumnA { get; set; }
[Ordinal(1)] public string SecondColumn { get; set; }
[Ordinal(2)] public string ColumnC { get; set; }
}
您可以阅读有关此订购问题here的更多信息,用户 dyatchenko 创建了一个拉取请求以支持自定义属性订购。最终,这又合并回了主人。