Linq insert ohne primary key
Ich brauche zum einfügen von Datensätzen in eine Tabelle, die keinen Primärschlüssel verwenden von LINQ to SQL. Die Tabelle ist schlecht entwickelt; ich habe KEINE Kontrolle über die Struktur der Tabelle. Der Tisch besteht aus ein paar varchar-Felder, ein Textfeld und einen Zeitstempel. Es wird als audit trail für andere Entitäten.
Was ist der beste Weg, um zu erreichen, die Einsätze? Konnte ich erweitern das Linq partielle Klasse, die für diese Tabelle und fügen Sie ein "fake" - Taste? Ich bin offen für jede Art von hack, aber kludgey.
Du musst angemeldet sein, um einen Kommentar abzugeben.
LINQ to SQL ist nicht dazu gedacht, für diese Aufgabe, verwenden Sie es nicht. Nur warp-einfügen in eine gespeicherte Prozedur, und fügen Sie die Verfahren, um Ihre Daten-Modell. Wenn Sie dies nicht tun können, schreiben Sie eine normale Funktion mit ein bisschen in-line-SQL.
Öffnen Sie Ihre DBML-Datei im designer, und geben Sie die Zuordnung ein Schlüssel ist, ob Ihre Datenbank hat oder nicht. Dies wird Ihr problem lösen. Nur Bedenken Sie jedoch, dass Sie nicht zählen können auf die Spalte, die verwendet wird, für die Identität oder irgendetwas anderes, wenn es nicht einen echten Schlüssel in der Datenbank.
War ich in der Lage, dies zu umgehen, mithilfe von einem zusammengesetzten Schlüssel.
Ich hatte ein ähnliches problem mit einer Tabelle mit nur zwei Spalten: username, role.
Diese Tabelle natürlich nicht verlangen, eine identity-Spalte. Also, ich habe einen zusammengesetzten Schlüssel mit Benutzername und Rolle. Das erlaubte mir, verwenden von LINQ für das hinzufügen und löschen von Einträgen.
Könnten Sie die DataContext.ExecuteCommand - Methode führen Sie Ihre eigenen benutzerdefinierten insert-Anweisung.
Oder, könnte man hinzufügen, eine primary key einer Spalte, wird diese ermöglichen es der Objekte verfolgt werden für inserts/updates/deletes, die von den datacontext. Dies funktioniert auch, wenn die Spalte ist nicht wirklich ein erzwungenes primary key in der Datenbank (wie würde linq wissen?). Wenn Sie das nur tut, fügt und nie wieder verwenden eine primary key-Wert in der gleichen datacontext, wirst du in Ordnung sein.