Создание сложного автомаппера - PullRequest
0 голосов
/ 19 марта 2019

Я пытаюсь использовать autopper для сопоставления вывода моей таблицы базы данных с моим объектом класса.Но в таблице есть 3 строки, которые принадлежат данным одного сотрудника, которые необходимо назначить одному объекту класса.Как мы можем создать картограф?Можно ли создать маппер с данными этой таблицы?

How can I write Autommapper  to populate the class EmployeeDetails

public  class EmployeeDetails
    {
        public string EmpNo { get; set; }
        public string Name { get; set; }
        public Address Address { get; set; }
        public List<Phone> Phone { get; set; }
    }
  public class Address
    {
        public string Address_1 { get; set; }
        public string City { get; set; }
    }
public class Phone
    {
        public string PhoneType { get; set; }
        public string PhoneNo { get; set; }

    }

Datatype    EmpNo   Name    Address_1   City        PhoneType   PhoneNo
Name        1234    Test    Test addr   Testcity    Null         Null
Phone       1234    Null    Null        Null        Mobile       123456
Phone       1234    Null    Null        Null        Work         789546

public IEnumerable< EmployeeDetails > GetEmployeeDetails()
        {
            return ExecuteEmpReader< EmployeeDetails>().ToList();
        }
private IEnumerable<T> ExecuteEmpReader <T>()
        { 
 DataTable dt=new Datatable(); 
//Assume the dt will be loaded as per the above table.
foreach (DataRow item in dt.Rows)
   {
              yield return _mapper.Map<T>(item)
    }
}

1 Ответ

0 голосов
/ 19 марта 2019

Я не верю, что есть способ сделать то, что вы хотите, используя исключительно Automapper. Именно из-за слияния строк в один. Эта ссылка показывает, как вы можете, по крайней мере, отсоединить свой объект от желаемой структуры объекта, но тогда вам нужно будет написать логику для объединения адресов и телефонных номеров сотрудников.

http://martinburrows.net/blog/2016/01/18/automatic-unflattening-with-automapper

Напротив, чтобы облегчить поддержку вашего результирующего кода в будущем. Я бы порекомендовал создать несколько видов вашего объекта Employee, один для Employee, один для Address и один для Phone. Затем вы можете использовать EF для отображения ваших видов прямо на ваши объекты.

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