Как только вы узнали, как заполнить мою ViewModel из модели с помощью Automapper, теперь я перехожу к следующему вызову - заполнению свойств ViewModel из объединенной таблицы.Automapper и Linq с объединенными таблицами, заполняющими свойства ViewModel
Изображение ниже показывает мою простую базу данных.
Мой класс ViewModel определяется как:
public class PersonViewModel
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public Nullable<int> Age { get; set; }
public Nullable<int> SuffixId { get; set; }
public string PersonStatus { get; set; }
public string PersonPreference { get; set; }
public virtual Suffix Suffix { get; set; }
} enter code here
обратите внимание на дополнительные поля PersonStatus и PersonPreference, которые придут от присоединения PersonInfo к человеку. Вот код, я использую для создания экземпляра моей конфигурации отображения:
Mapper.CreateMap<PersonViewModel, Person>();
Mapper.CreateMap<Person, PersonViewModel>();
И теперь код для заполнения ViewModel
List<PersonViewModel> persons = null;
using (var context = new DemoEntities())
{
persons = (from p in context.People.AsEnumerable()
join i in context.PersonInfoes on p.Id equals i.PersonId
select Mapper.Map<PersonViewModel>(p)).ToList();
return persons;
}
Как бы я заполнить два присоединившихся свойства (PersonStatus и PersonPreference) от этого настроить?
Заранее благодарен!
Почему вы присоединяетесь к PersonInfoes? EF будет обрабатывать это для вас автоматически, и automapper будет отображать его. – Scottie
Сначала несколько вопросов: почему 'AsEnumerable()' и как вы получаете один (из многих) 'PersonInfo's? –
Ну, во-первых, это просто простой пример, который я собрал вместе, чтобы задать вопрос. Но Скотти, вы говорите, что AM будет делать это автоматически. Можете ли вы уточнить? Кстати, человек для personinfo фактически от 1 до 1, а не от 1 до многих. Я пытаюсь имитировать бизнес-правило, которое мы имеем в другой системе с этим примером. Gert, я столкнулся с ошибкой без AsEnumerable(), я нашел эту ссылку, которая помогла мне решить ее: http://stackoverflow.com/questions/14770941/linq-and-automapper – xgp