2 Stimmen

Aktualisieren ohne vorherige Auswahl von Daten in LINQ 2 SQL?

Wie können Sie einen Datensatz aktualisieren, ohne die Daten zuerst in LINQ auswählen zu müssen?

Da Sie zuerst einen Linq Select durchführen müssen (der natürlich ein SQL SELECT aufruft, was kostspielig ist), ändern Sie die erforderlichen Eigenschaften und führen dann SubmitChanges() aus. Ich möchte dies vermeiden und nur ein SQL UPDATE durchführen, da ich die ID bereits kenne.

1voto

Matt Hamilton Punkte 193704

Sie müssen die anhängen. Methode, um eine unverbundene Entität an Ihre Tabelle "anzuhängen". Dieser Artikel auf MSDN beschreibt, wie man sie verwendet:

Datenabruf und CUD-Operationen in N-Tier-Anwendungen

1voto

Ryan Lundy Punkte 195074

Ich habe es nicht ausprobiert, aber es sieht so aus, als ob man das mit Attach machen kann:

Table(TEntity).Attach Methode (TEntity, Boolean)

Sie richten das Objekt in seinem aktualisierten Zustand ein und übergeben es, wobei Sie den booleschen Parameter auf true setzen. Natürlich müssen Sie dann tous alle Felder, nicht nur die, die Sie ändern wollen.

Wenn Sie nur ein oder zwei Felder ändern wollen, können Sie SQL direkt mit der Option ExecuteCommand y ExecuteQuery Methoden auf ein DataContext-Objekt. Sie müssen die SQL-Zeichenfolge als String und ein Argument für jeden Parameter in der SQL übergeben. Beachten Sie insbesondere, wie der SQL-String aufgebaut sein muss:

Die Syntax für den Befehl lautet in etwa die gleiche wie die Syntax zum Erstellen eines eines ADO.NET DataCommand verwendet wird. Der einzige Unterschied besteht darin, wie die Parameter angegeben werden. Genauer gesagt, Sie Parameter angeben, indem Sie sie in geschweifte in geschweiften Klammern ({ }) und zählen sie auf beginnend mit 1. Der Parameter ist mit dem gleich nummerierten Objekt im Parameter-Array zugeordnet.

1voto

Eric J. Smith Punkte 953

PLINQO implementiert Entity Detach und ermöglicht es Ihnen, eine Entität aus einem Kontext zu lösen und sie dann wieder an einen anderen Kontext anzuhängen. Außerdem können Aktualisierungen und Löschungen direkt ausgeführt werden, ohne die Entitäten vorher abzurufen. Weitere Informationen finden Sie auf der Website http://www.plinqo.com/

0voto

tvanfosson Punkte 506878

Dies wird sehr schwer zu tun, es sei denn, Sie Ihre Objekte bis zu optimistischen Gleichzeitigkeit (alle Spalten zu nocheck, ich denke) zu verwenden. Mit jeder Art von Gleichzeitigkeit benötigen Sie sowohl die alten Werte und die neuen Werte, zumindest für die Spalten, die überprüft werden. Alternativ könnten Sie eine SQL-Funktion/gespeicherte Prozedur für die Aktualisierung erstellen und zuordnen oder das SQL direkt mit ExecuteCommand ausführen, wie @Kyralessa sagt. Ich denke, dass Detach/Attach am besten funktioniert, wenn sie gepaart sind, d.h. das Objekt holen, es abtrennen, es verwenden und dann wieder anhängen und speichern, wenn Sie fertig sind.

0 Stimmen

Ja. Mein Zweck ist, wo ein Benutzer eine Sortierreihenfolge von Elementen neu anordnen kann; Ich kann alle Formulardaten zurückgeben und die Sortierreihenfolge aktualisieren, aber dann würden alle ihre Formulardaten auch aktualisiert werden, selbst wenn sie nur die Sortierung aktualisiert haben wollten. Ich möchte nur wirklich die Reihenfolge Spalte zu aktualisieren, aber hören, was Sie auf concurr bedeuten.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X