2016-09-05 10 views
1

Der Zweck dieser Aufgabe besteht darin, meine Datenbank, die die Standardwerte für alle Entitäten enthält, in eine neu erstellte Datenbank zu kopieren. Diese Aufgabe wird aufgerufen, wenn das Programm die Datenbank zum ersten Mal erstellt, sodass die neu erstellte Datenbank mit den Werten aus meiner Standardwertdatenbank gefüllt wird.Wie kopiert man eine komplette Datenbank mit Entity Framework?

Das Problem mit nur Kopieren und Einfügen von Datenbank ist, dass meine Standardwertdatenbank über unordentliche Primärschlüssel verfügt. Der Wert des Primärschlüssels jeder Entität ist nicht korrekt.

Was ich will ist, neue Datenbank für das Programm zu erstellen, mit den Werten aus einer anderen Datenbank kopiert, aber mit kontinuierlichen Primärschlüssel für jede Entität (1,2,3,4,5 nicht springen).

Voraussetzung ist, dass die Struktur, Referenzen aus der Default-Wert-Datenbank, fest bleiben müssen. Wenn zum Beispiel die Entität A von 5 auf id = 1 kopiert wurde, wurden auch alle Referenzen auf 1 geändert.

Wie kann ich das erreichen? Gibt es einen schnellen Weg dies zu tun, anstatt jedes Element manuell zu kopieren? Weil es eine ziemlich große Datenbank ist.

Hinweis: Der Standarddatenbankkontext ist identisch mit dem neu erstellten Datenbankkontext.

+0

ich denke nicht gerade nach vorne müssen Sie einige ETL-Tool verwenden id (kontinuierlich zu ändern Primärschlüssel für jede Entität) und dann korrekt zuordnen. –

+0

Wenn Sie eine Kopie für die gesamte Datenbank (nicht bestimmte Tabellen) erhalten möchten, können Sie einfach Datenbankdateien kopieren oder anhängen oder Datenbanken sichern und wiederherstellen (oder ein Dienstprogramm zum Kopieren der Datenbank verwenden). – OlegAxenow

Antwort

0

Ich selbst habe so eine Aufgabe einige Monate zurück. Es gibt keinen automatischen Weg. Sie müssen es manuell tun. Ich möchte die Schritte teilen, wo ich verwendet habe.

Schritt 1:

ich eine neue db erstellt haben (dh Migrated) durch (delete data und PK Reseed) die alte db.After Paraphierung, dass ich eine exakte Kopie der alten db (dh Schema nur. Hier werden keine Daten)

ist das Skript für eine Tabelle

Use Migrated; 
GO 

delete from IpOccupantNotes 
GO 

--To Reseed the PK 

DBCC CHECKIDENT ('[IpOccupantNotes]', RESEED, 0) 
GO 

Schritt 2:

Danach habe ich die relevanten Daten aus dem alten db (Legacy in meinem Fall) wie unten gezeigt eingefügt.

INSERT INTO [Migrated].[dbo].[IpOccupantNotes] (Name, ZipCode) 
select a.Name,a.ZipCode from [Legacy].[dbo].[IpOccupantNotes] as a; 

GO 

Hinweis: Wenn Sie Fragen haben, zögern Sie Hilfe zu Ihnen ask.I'll :)

Verwandte Themen