SqlBulkCopy 是否支持 MsSql 2017 中的图表?
Does SqlBulkCopy support Graphtables in MsSql 2017?
我正在试用新的 graphdatabase support that was added to Microsoft SQL Server 2017
我想使用 SqlBulkCopy 将几千个节点插入一个节点 table。
但是我总是错误:
Column '$node_id_DB218B0EAE294E37804103CF4E82BCD2' does not allow DBNull.Value.
我的 table 是这样创建的
CREATE TABLE [Product] (
[id] bigint,
[name] nvarchar(max),
[partsNum] bigint,
[price] float) AS NODE;
CREATE TABLE [DependsOn] (
[weight] float,
[id] bigint) AS EDGE;`
我准备了一个包含所有属性的数据table,然后像这样调用 SqlBulkCopy:
using (var bulkCopy = new SqlBulkCopy(Connection, SqlBulkCopyOptions.TableLock | SqlBulkCopyOptions.FireTriggers, null)
{
DestinationTableName = "Product"
})
{
bulkCopy.WriteToServer(_dataTable);
}
现在我想知道我是不是做错了什么,或者这是否还不受支持。
SqlBulkCopy
对DataTable
没有特殊处理;它将映射列以按顺序位置从源复制到目标,就像它对采用其他源的其他重载所做的那样。因此,按名称设置身份映射不是可选的:
foreach (DataColumn c in dataTable.Columns) {
sqlBulkCopy.ColumnMappings.Add(c.ColumnName, c.ColumnName);
}
对于图表和节点表,问题比平时更明显,因为支持结构的内部列(您通常不会明确使用)出现在 start列列表,因此几乎可以保证失败。
我正在试用新的 graphdatabase support that was added to Microsoft SQL Server 2017
我想使用 SqlBulkCopy 将几千个节点插入一个节点 table。
但是我总是错误:
Column '$node_id_DB218B0EAE294E37804103CF4E82BCD2' does not allow DBNull.Value.
我的 table 是这样创建的
CREATE TABLE [Product] (
[id] bigint,
[name] nvarchar(max),
[partsNum] bigint,
[price] float) AS NODE;
CREATE TABLE [DependsOn] (
[weight] float,
[id] bigint) AS EDGE;`
我准备了一个包含所有属性的数据table,然后像这样调用 SqlBulkCopy:
using (var bulkCopy = new SqlBulkCopy(Connection, SqlBulkCopyOptions.TableLock | SqlBulkCopyOptions.FireTriggers, null)
{
DestinationTableName = "Product"
})
{
bulkCopy.WriteToServer(_dataTable);
}
现在我想知道我是不是做错了什么,或者这是否还不受支持。
SqlBulkCopy
对DataTable
没有特殊处理;它将映射列以按顺序位置从源复制到目标,就像它对采用其他源的其他重载所做的那样。因此,按名称设置身份映射不是可选的:
foreach (DataColumn c in dataTable.Columns) {
sqlBulkCopy.ColumnMappings.Add(c.ColumnName, c.ColumnName);
}
对于图表和节点表,问题比平时更明显,因为支持结构的内部列(您通常不会明确使用)出现在 start列列表,因此几乎可以保证失败。