2012-04-04 9 views
0

Dies ist der Update-Code gefunden:Linq zu Einheit Update Datensätze Datenbank

using (TestDBEntities ctx = new TestDBEntities()) 
{ 
    //Get the specific employee from Database 

    Emp e = (from e1 in ctx.Emp 
     where e1.Name == "Test Employee" 
     select e1).First(); 

    //Change the Employee Name in memory 
    e.Name = "Changed Name"; 

    //Save to database 
    ctx.SaveChanges(); 
} 

Nun, was ich tue, ist wie folgt:

using(CRNNSTestEntities crnnsupContext = new CRNNSTestEntities()) 
{ 
    CPersonalInfo t = ((IQueryable<CPersonalInfo>)Cache["personquery"]).First(); 

    t.Tombstone.Address = Address1.Text; 
    System.Windows.Forms.MessageBox.Show(crnnsupContext.SaveChanges()+""); 
}; 

, die nicht funktioniert. Also meine Frage ist, muss ich etwas schreiben wie CPersonalInfo t = from t in ....

Warum funktioniert meine Methode nicht?

Dank

Antwort

0

Sie benötigen die Unternehmen CPersonalInfo t von Ihrem crnnsupContext und nicht von Ihrem Cache

+0

bedeutet das, dass ich jedes Mal, wenn ich den Datensatz aktualisieren möchte, zuerst die Suchabfrage ausführen muss? – pita

+0

@pita - Ja, Sie müssen den Datensatz aus dem Kontext abrufen, den Sie anrufen * SaveChanges() * mit. – Aducci

0

Sie auch vor Aufgabe auf den Kontext anhängen zu bekommen.

Weitere Daten wie anhängen verwenden here

+0

Das Anfügen von Objekten an den Kontext vor dem Aktualisieren/Löschen eines Objekts ist eine Möglichkeit, die von Julia Lerman und Rowan Miller (Programm-Manager für das ADO.NET Entity Framework-Team bei Microsoft) in ihrem "Programming Entity Framework: DbContext" auf S.47 beschrieben wurde. http://www.amazon.com/Programming-Entity-Framework-Julia-Lerman/dp/1449312969 – ADIMO

0

können Sie diese

using (TestDBEntities ctx = new TestDBEntities()) 
 
{ 
 
    //Get the specific employee from Database 
 

 
    Emp e = (from e1 in ctx.Emp 
 
     where e1.Name == "Test Employee" 
 
     select e1).First(); 
 

 
    //Change the Employee Name in memory 
 
    e.Name = "Changed Name"; 
 

 
    //Save to database 
 
    ctx.SaveChanges(); 
 
}
ändern

in

using (TestDBEntities ctx = new TestDBEntities()) 
 
{ 
 
    //Get the specific employee from Database 
 

 
    Emp e = (from e1 in ctx.Emp 
 
     where e1.Name == "Test Employee" 
 
     select e1).First(); 
 
    var entity = ctx.Emp.Find(e); 
 
    //Change the Employee Name in memory 
 
    entity.Name = "Changed Name"; 
 

 
    //Save to database 
 
    ctx.SaveChanges(); 
 
}