2016-08-09 3 views
0

Я новичок в запросе Linq, и я получаю свои пользовательские параметры из нескольких текстовых полей, чтобы обновить конкретный пользователь в базе данных, но он не работает. Я стараюсь многократно, но они не работают там без ошибок, но также там нет обновления пользователяОбновление с использованием запроса Linq не работает должным образом

Код:

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

вместо выбора нового UserEntity, просто выберите р - то у вас есть объект, чтобы обновить – NDJ

ответ

1

вы просто попробуйте обновить проекцию, когда вы делаете select new. Вместо этого, вы должны пойти на что-то вроде этого:

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

А остальное должно быть в порядке.

* Edit: Для получения дополнительной информации о проекционных операций (C#) и более четкое представление вы можете найти на сайте:

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

+0

спасибо за вашу помощь –

0

Попробуйте этот путь

Вы можете использовать объект контекста и значения обновления для сохранения в базе данных.

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. 
      } 


     } 
Смежные вопросы