Ich benutze C# und mit SqlBulkCopy. Ich habe jedoch ein Problem. Ich muss eine Masseneingabe in eine Tabelle und dann eine weitere Masseneingabe in eine andere Tabelle vornehmen.Möglich, PrimayKey IDs nach einer SQL BulkCopy zurück zu bekommen?
Diese 2 haben eine PK/FK-Beziehung.
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.
Also diese Tabellen haben eine Eins-zu Eins-Beziehung, aber ich bin nicht sicher, wie alle jene PK Id zurück zu bekommen, dass der Masseneinsatz gemacht, da ich sie brauche für Tabelle B
bearbeiten
Konnte ich so etwas tun?
Dies sollte alle Zeilen finden, die nur mit der sql Bulk-Kopie eingefügt wurden. Ich bin mir nicht sicher, wie ich die Ergebnisse daraus nehmen soll, dann mache eine Masse mit ihnen aus einem SP.
Das einzige Problem, das ich damit sehen kann, ist, dass, wenn ein Benutzer die Datensätze nacheinander tut und eine This-Anweisung zur gleichen Zeit ausgeführt wird, könnte es versuchen, eine Zeile zweimal in die "Product Review Table" einzufügen.
Also sagen, ich habe wie ein Benutzer den manuellen Weg und einen anderen Benutzer die Masse Weg etwa zur gleichen Zeit.
manuellen Weg. 1. Benutzer sendet Daten 2. Linq zu sql Produktobjekt wird gemacht und mit den Daten gefüllt und eingereicht. 3. Dieses Objekt enthält jetzt die ProductId 4. Ein weiteres linq to sql-Objekt wird für die Produktübersichtstabelle erstellt und eingefügt (Produkt-ID aus Schritt 3 wird mitgeschickt).
Massenweg. 1. Der Benutzer erfasst Daten von einem Benutzer, der die Daten teilt. 2. Alle Produktreihen vom Sharing-Benutzer werden erfasst. 3. SQL Bulk-Kopie einfügen auf Produktreihen geschieht. 4. Mein SP wählt alle Zeilen aus, die nur in der Produkttabelle vorhanden sind und erfüllt einige andere Bedingungen 5. Masseneinfügung geschieht mit diesen Zeilen.
Was passiert also, wenn Schritt 3 (manueller Weg) gleichzeitig mit Schritt 4 (Massenweg) passiert? Ich denke, es würde versuchen, die gleiche Zeile zweimal einzufügen, was zu einer Ausnahme für die primäre Einschränkung führt.
Was bindet die Tabellen im Voraus? –