Obwohl dies wahrscheinlich nicht die beste Vorgehensweise ist, versuche ich eine Reihe von Datensätzen aus einer Datenbanktabelle zu löschen und dann eine Reihe von Datensätzen einzufügen - von denen einige möglicherweise in der ursprünglichen Serie waren. und andere, die neu sein können. Ich benutze linqtosql in C#. Pseudo-Code muss ich tun, ist unten; Es schlägt fehl mit "Kann eine Entität nicht mit einem Schlüssel hinzufügen, der bereits verwendet wird."LinqtoSQL - Löschen und Einfügen
using (dbDataContext context = new dbDataContext()
{
// I've also tried using table.LinkedTable.Clear(); but that shows the same error
while (table.LinkedTable.Count() > 0)
{
table.LinkedTable.RemoveAt(0);
}
foreach (ListItem item in SelectedItems.Items)
{
LinkedTable lt = new LinkedTable();
lt.id = table.id;
lt.SomeValue = item.SelectedValue;
table.LinedTable.Add(lt);
}
context.SubmitChanges();
}
Es scheint wie LinqToSql nicht zur Kenntnis nehmen, die ich Elemente entfernt haben, bevor es versucht, Artikel hinzufügen, eine Verdoppelung Fehler verursacht. Hat jemand irgendwelche Vorschläge, um das zu korrigieren?
BEARBEITEN Wenn ich ein SubmitChanges nach dem Löschen hinzufügen, habe ich am Ende mit dieser Nachricht.
"Es wurde versucht, eine Beziehung zwischen einer Tabelle und einer LinkedTable zu entfernen. Einer der Fremdschlüssel der Beziehung (LinkedTable.Id) kann jedoch nicht auf null gesetzt werden."
Was passiert, wenn Sie ein Insert "context.SubmitChanges();" Rufe zwischen dem Löschen deines Tisches und dem Einfügen neuer Einträge auf? –