Possible d'obtenir PrimayKey Id de retour après un SQL BulkCopy?

Je suis à l'aide de C# et de l'aide SqlBulkCopy. J'ai un problème. J'ai besoin de faire une masse insérer dans une table, puis une autre masse insérer dans une autre table.

Ces 2 ont un PK/FK relation.

Table A
Field1 -PK auto incrementing (easy to do SqlBulkCopy as straight forward)

Table B
Field1 -PK/FK - This field makes the relationship and is also the PK of this table. It is not auto incrementing and needs to have the same id as to the row in Table A.

De sorte que ces tables ont une relation, mais je ne sais pas comment faire pour récupérer tous ceux PK Id que la masse insérer fait depuis que j'en ai besoin pour le Tableau B.

Modifier

Je pourrais faire quelque chose comme cela?

SELECT * 
FROM Product
WHERE NOT EXISTS (SELECT * FROM ProductReview WHERE Product.ProductId = ProductReview.ProductId AND Product.Qty = NULL AND Product.ProductName != 'Ipad')

Cela devrait trouver toutes les lignes où vient d'être insérée avec le sql de copie en bloc. Je ne suis pas sûr de savoir comment prendre les résultats de cette puis faire une masse insérer avec eux à partir d'un SP.

Le seul problème que je peux voir avec cela est que si un utilisateur est en train de faire les enregistrements un à un temps et un cette instruction s'exécute en même temps, il pourrait essayer d'insérer une ligne de deux fois dans la "Revue de Produit Table".

Donc, dire que je suis comme un utilisateur à l'aide de la méthode manuelle et d'un autre utilisateur du fait de la masse de façon à peu près en même temps.

de façon manuelle.
1. L'utilisateur soumet des données
2. Linq to sql objet Produit est fait et rempli avec les données et les soumis.
3. cet objet contient maintenant le ProductId
4. Un autre linq to sql objet de l'examen des Produits de la table et est insérée(Id de Produit à partir de l'étape 3 est envoyé).

De masse.
1. L'utilisateur saisit des données à partir d'un utilisateur partage de données.
2. Tous les Produits des lignes de l'utilisateur partage sont de main.
3. SQL de copie en bloc à insérer sur le Produit des lignes qui se passe.
4. Ma SP sélectionne toutes les lignes qui n'existent que dans le tableau des Produits et répond à certaines autres conditions
5. Masse insert qui se passe avec ces lignes.

Donc ce qui arrive si l'étape 3(méthode manuelle) se déroule en même temps que l'étape 4(masse manière). Je pense qu'il serait d'essayer d'insérer la même ligne de deux fois provoquant une première contrainte execption.

Ce qui lie les tables sur coup droit?

OriginalL'auteur chobo2 | 2010-05-31