Добавление данных в существующую модель с реальными данными в MVC - PullRequest
0 голосов
/ 12 июня 2019

У меня есть предыдущий вопрос, который показывает, как выглядят мои модели, и он добавляет данные FAKE. Добавить в существующую модель на основе POCO с необходимостью добавить в список

Теперь я хочу добавить РЕАЛЬНЫЕ данные, и мне интересно, как это сделать.Должен ли я нуждаться в петле над result ??

public IActionResult FindPerson (FindPersonViewModel findPersonViewModel)
{
    var firstName = findPersonViewModel.FirstName;
    var middleName = findPersonViewModel.MiddleName;
    var lastName = findPersonViewModel.LastName;
    var emailAddress = findPersonViewModel.EmailAddress;
    var genderTypeId = findPersonViewModel.GenderTypeId;


    // GET REAL DATA 
    using (AzEdsIdentityContext context = new AzEdsIdentityContext(AzEdsIdentityContext.Options))
    {
         var result = context.FindPerson(firstName, lastName, genderTypeId);

         // for loop on the result to hydrate new List<FindPersonResultsViewModel>()  ?         

    }


   // Note:  here is exactly how I hydrated the model with fake data

   findPersonViewModel.findPersonResultsViewModel = new List<FindPersonResultsViewModel>()
                { new FindPersonResultsViewModel { AZEDID = 33423432, PersonID = 3534454, FirstName = "John", LastName = "Williamson", MiddleName = "K", ExistInContactManager = false, ActionType = true, ContactType = "Principal", DOB = "5/1/1985", PhysicalAddress = "123 main st. mesa, az.", PreferredEmail = "john@aol.com", PreferredPhone = "602-393-4443"},
                  new FindPersonResultsViewModel { AZEDID = 33423432, PersonID = 3534454, FirstName = "Jon", LastName = "Williamson", MiddleName = "K", ExistInContactManager = false, ActionType = true, ContactType = "Principal", DOB = "5/1/1985", PhysicalAddress = "123 main st. mesa, az.", PreferredEmail = "john@aol.com", PreferredPhone = "602-393-4443"},
   };


}

1 Ответ

1 голос
/ 12 июня 2019

С учетом модели Person

public class Person
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Email { get; set; }
}

И вы получаете результат из своего контекста

List<Person> result = context.getPersons();

Вам нужен набор другого, но схожего типа, поэтому вы используете проекцию

List<PersonViewModel> result =
    context.getPersons()
           .Select(p => new FindPersonResultsViewModel
                            {
                                Name = p.Name,
                                Email = p.Email
                            }).ToList();

Затем назначьте свойство коллекции другой модели

var model = new ResultViewModel
                {
                    ...
                    findPersonResultsViewModel = result
                };

Если вы возвращаетесь IEnumerable, выполните .ToList(), чтобы получить List<T>.

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