【发布时间】:2012-01-27 02:14:17
【问题描述】:
相对简单的问题。Table A 有ID int PK,唯一Name varchar(500),和cola, colb 等Table B 有一个外键到Table A。
因此,在应用程序中,我们将表 A 和表 B 的记录生成到内存中的 DataTables 中。
我们将在大量“客户”上生成数千条此类记录。
最终我们调用来存储这些记录。但是,表 A 中的记录可能已经存在于数据库中,因此我们需要获取已存在记录的主键,并插入缺失的记录。然后用正确的外键插入表 B 的所有记录。
建议的解决方案:
我正在考虑将 xml 文档发送到 SQL Server,以将其作为行集打开到 TableVarA,使用已存在记录的主键更新 TableVarA,然后插入丢失的记录并将其输出到 TableVarNew ,然后我从TableVarA中选择Name和主键联合所有TableVarNew。
然后在代码中将正确的 FK 填充到内存中的 TableB 中,并使用 SqlBulkCopy 插入所有这些记录。
这听起来像是一个好的解决方案吗?如果是这样,在内存中为TableB 填充 FK 以匹配返回的 DataSet 中的主键的最佳方法是什么。
【问题讨论】:
标签: c# sql-server-2005 tsql upsert