How to update mit Linq-To-SQL?
Ich brauche, die Werte zu aktualisieren, aber ich bin Schleife alle Tabellen Werte, es zu tun:
public static void Update(IEnumerable<Sample> samples
, DataClassesDataContext db)
{
foreach (var sample in db.Samples)
{
var matches = samples.Where(a => a.Id == sample.Id);
if(matches.Any())
{
var match = matches.First();
match.SomeColumn = sample.SomeColumn;
}
}
db.SubmitChanges();
}
Ich bin sicher, dass der code oben ist nicht der richtige Weg, es zu tun, aber ich konnte mir nicht vorstellen, dass es eine andere Möglichkeit noch. Können Sie zeigen, einen besseren Weg?
InformationsquelleAutor der Frage Jader Dias | 2009-08-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ja, es gibt einen einfacheren Weg. Viel einfacher ist. Wenn Sie fügen Sie Ihre Elemente an den Kontext und Aktualisieren Sie dann (mit KeepCurrentValues ausgewählt), Linq to SQL, erhalten diese Personen von dem server aus, vergleichen Sie Sie, und markieren Sie aktualisiert, diejenigen, die anders sind. Dein code würde in etwa so Aussehen.
In diesem Fall, Linq to SQL ist mit den Tasten übereinstimmen, und aktualisieren von Datensätzen so lange, wie Ihre Schlüssel sind synchron, Sie sind in Ordnung.
InformationsquelleAutor der Antwort Jacob Proffitt
Mit Linq2Sql (oder Linq to Entities), es gibt keine Möglichkeit* zum aktualisieren von Datensätzen auf dem server abrufen, ohne Sie zuerst, was Sie tun, ist eigentlich richtig.
Wenn Sie dies vermeiden möchten, schreiben Sie eine gespeicherte Prozedur, die das macht, was Sie wollen, und fügen Sie es zu Ihrem Modell.
Ich bin mir nicht ganz sicher, ob das so beabsichtigt, Frage aber 🙂
*: Es gibt einige hacks, um LINQ to bauen Sie eine SELECT-Anweisung und Metzger die resultierende SELECT-Anweisung in ein UPDATE irgendwie, aber ich würde nicht empfehlen es.
InformationsquelleAutor der Antwort Thorarin