34

Okay, ich bin also neu in EF und LINQ. Ich habe herausgefunden, wie man INSERT und DELETE, aber aus irgendeinem Grund scheint UPDATE meinem Zugriff zu entkommen. HierLINQ to Entities, wie man einen Datensatz aktualisiert

ist eine Probe von meinem Code:

EntityDB dataBase = new EntityDB(); 
Customer c = new Customer 
{ 
    Name = "Test", 
    Gender = "Male 
}; 
dataBase.Customers.AddObject(c); 
dataBase.SaveChanges(); 

Die oben erzeugt und fügt einen Datensatz nur in Ordnung.

Customer c = (from x in dataBase.Customers 
      where x.Name == "Test" 
      selext x).First(); 
dataBase.Customers.DeleteObject(c); 
dataBase.SaveChanges(); 

Das obige löscht effektiv den angegebenen Datensatz.

Jetzt, wie aktualisiere ich? Ich kann anscheinend keine "UpdateObject()" -Methode für die Entitätssammlung finden.

+0

Wenn Sie EF4 verwenden, würde ich diese Lösung bevorzugen http://stackoverflow.com/questions/623672/update-entity-framework-objects –

Antwort

73

nur eine der zurückgegebenen Einheiten ändern:

Customer c = (from x in dataBase.Customers 
      where x.Name == "Test" 
      select x).First(); 
c.Name = "New Name"; 
dataBase.SaveChanges(); 

Hinweis, können Sie nur eine Einheit (etwas aktualisieren, die EntityObject erstreckt, nicht etwas, das Sie etwas verwenden wie select new CustomObject{Name = x.Name}

+0

Ich habe Das. Aus irgendeinem Grund werden die Änderungen an der Datenbank nicht beibehalten. – Chev

+1

Nevermind. Das hat funktioniert. Ich habe mir die falschen Daten angesehen. – Chev

+0

@Chevex: Aber beachten Sie, dass es bei der Verwendung einer anderen Kontextinstanz viel mehr involviert ist. –

3

Beide Spur projiziert haben Ihre Änderungen an der Sammlung, rufen Sie einfach die Savechanges() -Methode, die die DB.

6

// for update

aktualisieren sollte

// zum Löschen

dataBase.Customers.RemoveAll(x=>x.Name=="Name");