将具有多个相关表的DataSet批量插入SQL Server C#

时间:2018-08-27 18:12:45

标签: c# sql-server datatable foreign-keys dataset

我有一个包含多个表的DataSet,源文档是XML文件。

mydataset.ReadXML(filename);

有多个具有多个关系的表。我有通过代码在SQL中创建的数据库-表,列和关系。

现在我想插入数据。 (是的,我想要一切)。 编辑: SQL表使用“身份列”自动生成-因为我不确定传入的数据将不会重复我想假设的唯一参数之一。

那么考虑到我有外键约束,我应该怎么做才能确保输入数据,应该如何迭代数据集中的表以确保我不尝试插入需要现有ID的表中。我应该创建一个硬编码的地图(我也不太喜欢),还是在表中查找外键并验证父表等?

有什么想法吗?我确信有人以前做过,对我来说很简单。

1 个答案:

答案 0 :(得分:1)

您有两种选择。假设数据库未生成键值,这非常简单。

1)您发现加载表的顺序,以便每个带有外键的表都在其引用的表之后 加载。

2)您在SqlBulkCopy中关闭约束检查,然后在加载后选择检查约束。

要在加载后检查约束,请运行类似

的命令
alter table SomeTable with check check constraint fk_SomeTable_OtherTable

如果您具有数据库生成的密钥,那么这将更加困难。但是,解决此问题的最佳方法是使用IDENTITY列中的SEQUENCE对象,然后运行sp_sequence_get_range将新的密钥范围获取到客户端,然后首先在客户端应用密钥。