2017-02-21 7 views
0

Я новичок в Automapper. С приведенными ниже ссылками я пытаюсь понять это в действии.Как использовать последнюю версию Automapper?

Я использую его Automapper V 5.2.0

Вот мой материал. https://codepaste.net/xph2oa

class Program 
{ 
    static void Main(string[] args) 
    { 
     //PLEASE IGNORE NAMING CONVENTIONS FOR NOW.Sorry!! 
     //on Startup 
     AppMapper mapperObj = new AppMapper(); 
     mapperObj.Mapping(); 

     DAL obj = new DAL(); 
     var customer = obj.AddCustomers(); 


    } 
} 

class Customer 
{ 
    public int CustomerId { get; set; } 

    public string CustName { get; set; } 
} 


class CustomerTO 
{ 
    public int CustId { get; set; } 

    public object CustData { get; set; } 
} 


class AppMapper 
{ 
    public void Mapping() 
    { 
     var config = new MapperConfiguration(cfg => 
        { 
         cfg.CreateMap<Customer, CustomerTO>(); 
        }); 

     IMapper mapper = config.CreateMapper(); 

    } 
} 

class DAL 
{ 
    public IEnumerable<CustomerTO> AddCustomers() 
    { 
     List<Customer> customers = new List<Customer>(); 
     customers.Add(new Customer() { CustName = "Ram", CustomerId = 1 }); 
     customers.Add(new Customer() { CustName = "Shyam", CustomerId = 2 }); 
     customers.Add(new Customer() { CustName = "Mohan", CustomerId = 3 }); 
     customers.Add(new Customer() { CustName = "Steve", CustomerId = 4 }); 
     customers.Add(new Customer() { CustName = "John", CustomerId = 5 }); 

     return customers; //throws error 

    } 
} 

Ошибка -Cannot неявно преобразовать тип System.Collections.Generic.List»в 'System.Collections.Generic.IEnumerable'. Явное преобразование существует (вы пропали без вести броска?)

Как отобразить List<Customer> к List<CustomerTO>?

Пожалуйста, обратите внимание, что в Customer У меня есть свойство типа string с именем Custname в то время как CustomerTO у меня есть свойство с именем CustData типа object. Итак, как мне отобразить это другое свойство имени?

Спасибо.

+0

Проверьте [это] (http://stackoverflow.com/questions/37348788/automapper-5-0-global-configuration), я думаю, это поможет вам. Но я не знаю, можете ли вы «отобразить» из 'string' в' object' –

+0

Вы посмотрели на wiki? Он содержит самую последнюю документацию вместо моего блога, которая может быть устаревшей (например, статический API все еще существует и будет там). –

+0

@JimmyBogard, Спасибо за блог. Ваш блог + некоторые другие ссылки были достаточно достаточными для начала. Я еще не проверял wiki. –

ответ

1

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

Однако, в том случае, если вы не делаете, что вам нужно указать, каким образом свойства должны быть отображены следующим образом

cfg.CreateMap<Customer, CustomerTO>() 
.ForMember(dto => dto.CustData, opt => opt.MapFrom(entity => entity.CustName)) 
.ForMember(dto => dto.CustId, opt => opt.MapFrom(entity, entity.CustomerId)); 

Я предполагаю, что вы хотите прямой карты CustName в CustData выше, и это будет работать нормально.

+0

Предположим, у меня есть 10+ объектов в Customer & CustomerTO. 9 свойств имеют одно и то же имя, но 1 имя и тип свойства разные. В таком случае мне нужно написать .ForMember <> 10 раз ?? –

+0

Нет, вам нужно указать только для члена, который по-разному назван. –

+0

Можете ли вы проверить обновленную запись, я получаю ошибку построения, в методе DAL –

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