2016-08-09 65 views
0

Ich bin neu in Linq Abfrage und ich bekomme meine Benutzerparameter aus mehreren Textbox, um einen bestimmten Benutzer in der Datenbank zu aktualisieren, aber es funktioniert nicht ich versuche mehrere Wege, aber sie arbeiten nicht dort kein Fehler aber auch kein Update des BenutzersUpdate mit Linq Abfrage funktioniert nicht richtig

Code:

public void Update(UserEntity person) 
{ 
    UserEntity user = new UserEntity(); 
    SurveyEntities dbcontext = new SurveyEntities(); 

    var query = (from p in dbcontext.Users 
       where p.UserId == person.UserId 
       select new UserEntity() { UserId =p.UserId , FirstName = p.FirstName, LastName = p.LastName, Birth = p.Birth.Value, Password = p.Password, UserName = p.Username, Email = p.Email, Active = p.Active.Value }).SingleOrDefault(); 

    query.FirstName = person.FirstName; 
    query.LastName = person.LastName; 
    query.UserName = person.UserName; 
    query.Password = person.Password; 
    query.Email = person.Email; 
    query.Birth = person.Birth; 
    query.Active = person.Active; 

    try 
    { 
     dbcontext.SaveChanges(); 
    } 
    catch (Exception e) 
    { 
     Console.WriteLine(e); 
     // Provide for exceptions. 
    } 
} 
+2

stattdessen ein neues UserEntity auszuwählen, nur p wählen - dann sind Sie an das Unternehmen zu aktualisieren müssen – NDJ

Antwort

1

Sie nur versuchen, einen Vorsprung zu aktualisieren, wenn Sie select new tun. Stattdessen sollten Sie für etwas so:

var query = (from p in dbcontext.Users 
       where p.UserId == person.UserId 
       select p).SingleOrDefault(); 

Und Rest sollte in Ordnung sein.

* Edit: Für weitere Informationen über Projektionsbetrieb (C#) und eine klare Vorstellung können Sie sich beziehen:

https://msdn.microsoft.com/en-us/library/mt693038.aspx

+0

Dank für Ihre Hilfe danken –

0

Versuchen Sie, diese Art und Weise

Sie Kontextobjekt und Aktualisierungswert verwenden können in der Datenbank speichern.

public void Update(UserEntity person) 
     { 
      UserEntity user = new UserEntity(); 

      SurveyEntities dbcontext = new SurveyEntities(); 

      // var query = (from p in dbcontext.Users 
      //    where p.UserId == person.UserId 
     //    select new UserEntity() { UserId =p.UserId , FirstName = p.FirstName, LastName = p.LastName, Birth = p.Birth.Value, Password = p.Password, UserName = p.Username, Email = p.Email, Active = p.Active.Value }).SingleOrDefault(); 

    UserEntity tmp= dbcontext.UserEntity.where(x=>x.userId==person.UserId).FirstDefault(); 
       tmp.FirstName = person.FirstName; 
       tmp.LastName = person.LastName; 
       tmp.UserName = person.UserName; 
       tmp.Password = person.Password; 
       tmp.Email = person.Email; 
       tmp.Birth = person.Birth; 
       tmp.Active = person.Active; 


      try 
      { 
       dbcontext.SaveChanges(); 
      } 
      catch (Exception e) 
      { 
       Console.WriteLine(e); 
       // Provide for exceptions. 
      } 


     }