Heim >Datenbank >MySQL-Tutorial >Kann LINQ direkte SQL-Updates ohne Select-Anweisungen durchführen?

Kann LINQ direkte SQL-Updates ohne Select-Anweisungen durchführen?

DDD
DDDOriginal
2024-12-20 10:31:10905Durchsuche

Can LINQ Perform Direct SQL Updates Without Select Statements?

Direkte Updates mit LINQ: Select-Anweisungen umgehen

Bei der Arbeit mit SQL können direkte Updates ohne Select-Anweisungen mithilfe von Bedingungen erstellt werden. Bei LINQ besteht das übliche Muster darin, Entitäten auszuwählen, sie zu ändern und Änderungen zu übermitteln.

Was aber, wenn Sie direkte Aktualisierungen mit LINQ ausführen und die Ausführung verzögern möchten? Ist es möglich, die Übertragung von Daten an den Client zu vermeiden und die SQL direkt ausführen zu lassen?

Die Antwort lautet „Ja“. LINQ-to-SQL kann Update-Anweisungen generieren, ohne dass eine Select-Anweisung erforderlich ist. Dies kann erreicht werden, indem ein Objekt mit Schlüsselwerten an den Kontext angehängt und seine Eigenschaften geändert werden.

Zum Beispiel:

Foo foo = new Foo { FooId = fooId }; // create obj and set keys
context.Foos.Attach(foo);
foo.Name = "test";
context.SubmitChanges();

Durch die Einstellung von UpdateCheck="Never" für alle Eigenschaften in der Dbml Datei wird eine einzelne Aktualisierungsanweisung generiert, ohne zuerst die ursprüngliche Entität auszuwählen.

Eine Einschränkung besteht darin, dass Sie die Eigenschaft initialisieren müssen, wenn Sie sie auf null setzen möchten Objekt mit einem anderen Wert, damit LINQ die Änderung erkennen kann. Zum Beispiel:

Foo foo = new Foo { FooId = fooId, Name = "###" };
...
foo.Name = null;

Zusätzlich können Sie während der Aktualisierung nach einem Zeitstempel suchen, indem Sie die Eigenschaft in der Dbml-Datei auf UpdateCheck="Always" setzen. Dadurch wird sichergestellt, dass die Aktualisierungsanweisung eine Bedingung enthält, die auf dem Zeitstempelwert basiert.

Das obige ist der detaillierte Inhalt vonKann LINQ direkte SQL-Updates ohne Select-Anweisungen durchführen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn