Sie suchen nach ColumnAttribute.AutoSync. Wenn Sie den Designer verwenden, überprüfen Sie jede Spalte auf eine Auto-Sync-Eigenschaft und setzen Sie sie auf Nie.
Bearbeiten: Ok, das hat nicht für Sie funktioniert. Mach dich bereit für eine Mapping-Hackerei!
Als ich mit einigen automatisch generierten Primärschlüsselspalte einlegen, erhalte ich diese SQL:
INSERT INTO [dbo].[TableName](fieldlist)
VALUES (@p0, @p1, @p2, @p3, @p4)
SELECT CONVERT(Int,SCOPE_IDENTITY()) AS [value]
Wie ich Ihre Anfrage zu verstehen, Sie wollen nicht, dass SELECT
Versuch 1: ich das ging Primärschlüsselfeld und legen Sie auto-generated auf false fest. Dies verursachte eine Sql-Ausnahme "Kann keinen expliziten Wert für die Identitätsspalte in der Tabelle 'TableName' einfügen, wenn IDENTITY_INSERT auf OFF gesetzt ist." Mit anderen Worten, linq hat einen Wert für diese Spalte angegeben.
Versuch 2: Ich löschte die automatisch generierten Spalten vom Designer. Dies führte dazu, dass Linq mir eine ungültige Vorgangsausnahme gab: "Ausführen, Aktualisieren oder Löschen von Operationen an 'Tabelle (Tabellenname)' kann nicht ausgeführt werden, da sie keinen Primärschlüssel hat."
Versuch 3: Ich löschte die automatisch generierten Spalten vom Designer, dann markierte ich eine andere Spalte als Primärschlüssel. Obwohl diese Spalte kein Primärschlüssel in der Datenbank ist, wird sie von LINQ DataContext zum Verfolgen der Zeilenidentität verwendet. Es muss für beobachtete Datensätze eines bestimmten DataContext eindeutig sein.
Dieser dritte Versuch erzeugt die folgende SQL (das ist, was für Sie fragen)
INSERT INTO [dbo].[TableName](fieldlist)
VALUES (@p0, @p1, @p2, @p3, @p4)
Danke für den Vorschlag. Ich habe das gemacht, aber der Profiler zeigt immer noch eine Auswahl nach Einfügungen und Aktualisierungen. Ich weiß nicht warum. –
Ich habe zwei Spalten, die markiert sind AutoGeneratedValue auf True festgelegt. Die select-Anweisung wählt diese beiden Spalten nach Einfügungen und Aktualisierungen aus, obwohl AutoSync auf false gesetzt ist. –
Das scheint eine lächerliche Menge an Arbeit für etwas zu tun, das beim ersten Einsatz von ADO.Net – Jasmine