我正在尝试在映射列的同时将列从Datatable映射到SQL database.Table。但是我一直收到这个错误
“ System.InvalidOperationException:'给定的ColumnName'FobID'与数据源中的任何列都不匹配。'
使用波纹管查看代码。
using(SqlBulkCopy sqlcopyTFobs = new SqlBulkCopy(destCNS))
{
sqlcopyTFobs.DestinationTableName = "[dbo].[TFobs]";
SqlBulkCopyColumnMapping mapFodID = new SqlBulkCopyColumnMapping("FobID", "FobID");
sqlcopyTFobs.ColumnMappings.Add(mapFodID);
sqlcopyTFobs.WriteToServer(dtTPositions);
}
如果我使用以下代码复制所有列,则会复制所有数据。但是我只需要复制某些列。
using(SqlBulkCopy sqlcopyTFobs = new SqlBulkCopy(destCNS))
{
sqlcopyTFobs.DestinationTableName = "[dbo].[TFobs]";
sqlcopyTFobs.WriteToServer(dtTPositions);
}
答案 0 :(得分:0)
请注意,列映射区分大小写。您可以从from MS网站获得一些指导。这是那里的简短段落
列映射定义了数据源和目标表之间的映射。
如果未定义映射-即ColumnMappings集合为空->列将根据顺序位置隐式映射。为了使它起作用,源和>目标架构必须匹配。如果不这样做,将抛出InvalidOperationException。
如果ColumnMappings集合不为空,则不必指定数据源中存在的每一列。那些未由集合映射的对象将被忽略。
您可以按名称或顺序引用源和目标列。您还可以在同一映射集合中混合按名称和按列引用。
看起来您的映射不正确。
如果您尝试从复制中删除某些字段,请参阅有关stackoverflow Skip some columns in SqlBulkCopy
的这篇文章