Как установить результат объединенной таблицы в класс модели - PullRequest
0 голосов
/ 02 августа 2011

У меня есть две таблицы, такие как User и UserInfo

  • UsersInfo
    UserId
    Имя пользователя
    Электронная почта
    Пароль
    LastLoginDate
  • Пользователь
    UserId
    Имя
    Имя
    PhoneNumber

Я хотел бы получить данные из базы данных, используя соединение.я написал следующий запрос, чтобы получить результат как из приведенной выше таблицы .

public ViewResult Index()
        {
            List<UserDetailModel> UsersCompleteDetails = (from u in db.Users
                                                          join l in db.UsersInfoes on u.UserId equals l.UserId
                                                          select new { u.UserId, u.UserName, u.Email, u.Password, u.LastLoginDate, l.FirstName, l.LastName, l.PhoneNumber }).ToList<UserDetailModel>;
            return View(UsersCompleteDetails);
        }

, и далее Модель пользовательского класса

**public class UserDetailModel
{
    //Following details are comes from UsersInfo Table
    public string UserId { get; set; }
    public string UserName { get; set; }
    public string Email { get; set; }
    public string Password { get; set; }
    public DateTime LastLoginDate { get; set; }
    //Following details are comes from User Table
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string PhoneNumber { get; set; }
}**

, но неЕсть идеи о том, как я могу сопоставить пользовательский класс с результатом запроса?прямо сейчас он дает мне следующее Ошибка:

Невозможно преобразовать группу методов 'ToList' в тип без делегата 'System.Collections.Generic.List'.Вы намеревались вызвать метод?

1 Ответ

1 голос
/ 02 августа 2011

Конкретная ошибка, которую вы получаете, заключается в том, что после вызова ToList у вас нет скобок, то есть: ToList<...>().Однако у вас есть большая проблема в том, что вы пытаетесь преобразовать список анонимного типа в типизированный список.

Вы можете использовать несколько библиотек, чтобы помочь вам сопоставить ваши сущности с объектами модели и т.наоборот, как AutoMapper , но вы также можете просто создать методы преобразования для модели и самих объектов данных или использовать автоматическую инициализацию свойств, которая была бы аналогична генерации анонимного типа.должен работать для вашего случая, он не очень красиво отформатирован, но должен понять смысл.

public ViewResult Index()
{
    List<UserDetailModel> UsersCompleteDetails = (from u in db.Users
                                                  join l in db.UsersInfoes on u.UserId equals l.UserId into userInfo
                                                  from info in userInfo.DefaultIfEmpty()
                                                  select new UserDetailModel() {  
        UserId = u.UserId, 
        UserName = u.UserName, 
        Email = u.Email, 
        Password = u.Password, 
        LastLoginDate = u.LastLoginDate, 
        FirstName = l.FirstName, 
        LastName = l.LastName, 
        PhoneNumber = l.PhoneNumber 
    }).ToList();

    return View(UsersCompleteDetails);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...