Ich benutze ASP.NET MVC4 mit Entity Framework Code zuerst. Ich habe eine Tabelle namens "Benutzer" mit Primärschlüssel "UserId". Diese Tabelle kann 200.000 Einträge enthalten.Ignorieren Sie doppelte Schlüssel einfügen mit Entity Framework
Ich muss noch 50 Benutzer einfügen. Ich könnte dies wie
foreach(User user in NewUsers){
context.Add(user);
}
dbcontext.SaveChanges();
Das Problem ist, einer oder mehrere dieser neuen Benutzer möglicherweise bereits in der DB vorhanden. Wenn ich sie hinzufüge und dann versuche zu speichern, wird ein Fehler ausgegeben und keine der gültigen hinzugefügt. Ich könnte den Code ändern, um dies zu tun:
was funktionieren würde. Das Problem ist, dass es 50 Mal eine Abfrage in einer 200.000+ Eintragstabelle ausführen muss. Also meine Frage ist, was ist die leistungsfähigste Methode zum Einfügen dieser Benutzer, ignorieren alle Duplikate?
'context.AddOrUpdate (Benutzer);' ist, was Sie –
@OO wollen Benutzer Es ist nicht wirklich, es ist verschiedene Daten, die von einer API abgerufen werden. Die API kann dieselben Daten in mehreren sequenziellen Aufrufen bereitstellen oder nicht. Ich habe nur "Benutzer" verwendet, weil es das erste Beispiel war, an das ich dachte. – Jordan
Ich hatte das gleiche Problem und fand keine angemessene Lösung. Hierfür gibt es gültige Szenarios, z. B. wenn Sie einen Massenimport aus CSV durchführen, bei dem die E-Mail-Adresse in einer vorhandenen Datenbank eindeutig sein muss. Das Lesen aller vorhandenen Schlüssel in den Speicher scheint für die Leistung nicht gut zu sein, und auch nicht jeden Eintrag separat hinzuzufügen. Es scheint, dass etwas wie INSERT IGNORE benötigt wird. – acarlon