SqlBulkCopy e DataTables com relação pai / filho na coluna de identidade

Temos a necessidade de atualizar várias tabelas que possuem relacionamentos pai / filho com base em uma chave primária de Identidade na tabela pai, que é referida por uma ou mais tabelas filho como uma chave estrangeira.

Devido ao grande volume de dados, gostaríamos de construir essas tabelas na memória, em seguida, usar SqlBulkCopy de C # para atualizar o banco de dados em massa do DataSet ou dos DataTables individuais.Gostaríamos ainda mais de fazer isso em paralelo, a partir de vários segmentos, processos e possivelmente clientes.

Nosso protótipo em F # é promissor, com um aumento de desempenho de 34x, mas esse código força valores de Identidade conhecidos na tabela pai. Quando não forçada, a coluna Identidade é gerada corretamenteno banco de dados quando SqlBulkCopy insere as linhas, mas os valores de Identidade NÃO são atualizados na DataTable na memória. Além disso, mesmo que fossem, não está claro se o DataSet iria corrigir corretamente os relacionamentos pai / filho, de modo que as tabelas filhas pudessem ser subsequentemente gravadas com valores de chave estrangeira corretos.

Alguém pode explicar como ter SqlBulkCopy atualizar valores de identidade e como configurar um DataSet para reter e atualizar relacionamentos pai / filho, se isso não for feito automaticamente quando um DataAdapter for chamado para FillSchema nos DataTables individuais.

Respostas que não estou procurando:

Leia o banco de dados para encontrar o valor de identidade mais alto atual e, em seguida, incrementá-lo manualmente ao criar cada linha pai. Não funciona para vários processos / clientes e, como eu entendo, transações com falha podem fazer com que alguns valores de Identidade sejam ignorados, portanto, esse método pode estragar a relação.Escreva as linhas pai uma por vez e peça o valor Identity de volta. Isso derrota pelo menos alguns dos ganhos obtidos com o SqlBulkCopy (sim, há muito mais linhas filhas do que as filhas, mas ainda há muitas linhas pai).

Semelhante à seguinte pergunta não respondida:

Como atualizar as tabelas pai e filho do conjunto de dados com a chave de identidade gerada automaticamente?