Ich wollte nur wissen, was die beste Vorgehensweise beim Aktualisieren von Entitäten mit linq2sql ist?Was ist die beste Vorgehensweise zum Aktualisieren von Entitäten in Linq2SQL?
Ein bisschen mehr Details, um die Frage besser zu verstehen.
Wie ich aus den Artikeln verstehe, kann ich 2 Situationen haben: Entität ist an den Kontext und Entität von Grund auf (oder von bestehenden Entität) erstellt. Ich wollte nur eine Methode haben entites zu aktualisieren, dass jetzt in der folgenden Art und Weise implementiert ist:
public virtual void Save<T>(T value) where T : class
{
Context.GetTable<T>().Attach(value);
Context.Refresh(RefreshMode.KeepCurrentValues, value);
Context.SubmitChanges();
}
Natürlich, wenn ich den Code ausführen:
var orders = GenericRepository.Instance.Find<BuyerOrder>(b => b.ID == 2).FirstOrDefault();
orders.Price = 397809;
GenericRepository.Instance.Save(orders);
das Objekt bereits auf dem beigefügten Kontext und ich bekam eine Ausnahme:
Cannot attach an entity that already exists.
Sollte ich immer Objekte lösen vor dem Speichern? Gibt es eine andere Möglichkeit, dieses Problem zu lösen?
Sorry, wenn die Frage dumm ist - dies ist meine ersten Erfahrungen mit linq2sql
Diese ist die richtige Antwort. Entferne niemals deine Einheit und spiele keine Tricks. Speichern Sie keine einzelnen Entitäten. Nehmen Sie Änderungen an Ihrem Objektdiagramm als Ganzes vor und rufen Sie am Ende SaveChanges auf. – usr
danke für die Antwort. Aber wie kann ich definieren, dass die Entität an den Kontext gebunden ist? Ich möchte 2 Situation in 1 Methode behandeln: Wenn die Entität an den Kontext angefügt ist und wenn es nicht –
Sie können definieren, ob eine Entität mithilfe der Antwort in dieser Frage angefügt ist: http://stackoverflow.com/questions/6493737/how-do-i-check-ob-ein-linq-to-sql-Objekt-ist-bereits-angefügt-zu-einem-Datenkontext – mattytommo