我正试图使用bulkcopy将excel文件中的行插入到sql server 2000中。表中有一个"rowguid"字段,其默认值设置为(newid()),并且不能排除null值。此外,RowGUID设置为"是"。
在我的代码中,我删除了rowguid的列映射。这是我的密码。
if (dr.HasRows)
{
using (SqlBulkCopy bulkCopy =
new SqlBulkCopy(sqlConnectionString))
{
bulkCopy.DestinationTableName = "configtest";
SqlBulkCopyColumnMapping value = new SqlBulkCopyColumnMapping("rowguid", "rowguid");
bulkCopy.ColumnMappings.Remove(value);
bulkCopy.WriteToServer(dr);
}
}
我获取列"rowguid不允许dbnull.value "
该字段的定义是:rowguid,uniqueidentifier,allow nulls unchecked。
而不是
bulkCopy.ColumnMappings.Remove(value);
尝试
bulkCopy.ColumnMappings.Add(value);
您必须删除被引用的映射。因此,如果你已经有了ColumnMappings,你必须这样做:
var mapping = bulkCopy.ColumnMappings.Cast<SqlBulkCopyColumnMapping>()
.Single(x => x.DestinationColumn == "rowguid"));
bulkCopy.ColumnMappings.Remove(mapping);