2016-04-27 16 views
0

Wie füge ich einen zufälligen Wert ein, der während einer Code-first Entity Framework-Migration durch den C# -Code generiert wurde? Ich habe eine Spalte mit Seriennummern hinzugefügt, die einen eindeutigen Index enthält. Die Seriennummern haben das Format XXXYYYY-X, wobei X eine Zahl und Y ein alphabetisches Zeichen ist. Die Seriennummern müssen nicht in einer Reihenfolge sein, sie müssen nur zufällig sein (es gibt eine kleine Menge von Datensätzen in der Datenbank, so dass die Möglichkeit, eine doppelte Seriennummer zu erzeugen, klein ist).Zufällige Werte während der EF-Migration einfügen

Ich habe versucht, die folgenden:

AddColumn("dbo.Product", "SrNo", c => c.String(maxLength: 9, fixedLength: true, unicode: false, defaultValue: RandomSerialNo())); 

... aber die Migration schafft nur eine Seriennummer und versucht, es für alle Datensätze einzufügen.

+0

Haben Sie schon eine Lösung gefunden? Ich stehe gerade einem sehr ähnlichen Problem gegenüber. Ich möchte eine E-Mail-Spalte zu einer Benutzertabelle hinzufügen und möchte offensichtlich, dass die Spalte eindeutig ist, aber die Migration aufgrund von doppelten Werten (entweder mehrere Nullen oder dieselbe zufällige Zeichenfolge) fehlschlägt. – Christian

+1

Eigentlich nicht. Ich musste die Migration in zwei Teile aufteilen - der erste Teil ändert die Spalte. Dann führe ich manuell ein Skript aus, das sicherstellt, dass die Daten eindeutig sind. Und dann füge ich die eindeutige Einschränkung in einer zweiten Migration hinzu. – Storm

Antwort

-1

sollten Sie Ihren Code setzen Daten in die Datenbank an der SEED METHODE einzufügen, die in der Regel in configuration.cs

Die Samen Methode excecute, nachdem Sie Ihre Datenbank-Update-Datenbank Befehl Migration zu finden ist.

+1

Das Problem ist, die Seed-Methode wird NACH der Migration ausgeführt ... der Unique-Index wird jedoch während der Migration erstellt. Dies führt zu einem Migrationsfehler, sodass die Seed-Methode nicht einmal ausgeführt wird. – Storm

Verwandte Themen