Ich möchte durch eine Sammlung von Objekten Schleife und fügen Sie sie alle an einen Tisch. Die Zieltabelle hat ein Auto-Inkrement-Feld. Wenn ich ein einzelnes Objekt hinzufüge, gibt es kein Problem. Wenn ich zwei Objekte mit dem Primärschlüssel von Null hinzufüge, schlägt das Entitätsframework fehl. Ich kann Primärschlüssel manuell spezifizieren, aber der Hauptpunkt, den EF zu versuchen, war, das Leben leichter zu machen, nicht komplizierter. Hier ist der Code und die empfangene Ausnahme folgt.Automatische Nummerierung mit Entity Framework
foreach (Contact contact in contacts)
{
Instructor instructor = InstructorFromContact(contact);
context.AddToInstructors(instructor);
}
try
{
context.SaveChanges();
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
Der Fehler ist:
System.InvalidOperationException: Die Änderungen an der Datenbank erfolgreich begangen wurden, aber ein Fehler aufgetreten ist, während das Kontext Objekt zu aktualisieren. Der ObjectContext befindet sich möglicherweise in einem inkonsistenten Zustand. Inner Ausnahmemeldung: AcceptChanges kann nicht fortgesetzt werden, weil das Schlüsselwerte Konflikt des Objekts mit einem anderen Objekt in dem Object. Stellen Sie sicher, dass die Schlüsselwerte eindeutig sind, bevor Sie AcceptChanges aufrufen. bei System.Data.Objects.ObjectContext.SaveChanges (Saveoptions-Optionen)
bei System.Data.Objects.ObjectContext.SaveChanges() bei DataMigration.Program.CopyInstructors() in C: \ Projects \ Datenmigration \ Program.cs : line 52
ich vermute, dass, wenn Sie nur das Autowert-Feld leer lassen, wird die Datenbank für Sie zuweisen, wenn Sie zu begehen. –
Ja, es funktioniert, fügt die Datensätze hinzu und weist Primärschlüssel zu Das Problem ist, dass ich für ein solches typisches Szenario keine Ausnahme bekommen sollte. Ich bin sicher, dass es eine 'richtige' Art und Weise gibt, dies innerhalb des Rahmens zu tun, nur nicht sicher wie. – dcompiled
Nun, die Ausnahme wurde gestoppt, nachdem ich verschiedene Änderungen an der Tabelle vorgenommen und das Modell aktualisiert habe. Nicht sicher, was den Unterschied ausgemacht hat. Die einzigen Änderungen, die ich vorgenommen habe, waren einige Standardwerte für Spalten hinzuzufügen und diese Spalten auf null zu setzen. Nicht überzeugt davon, dass sich die Änderungen auf die Ausnahme beziehen. – dcompiled