Отображение объекта базы данных в DTO с помощью Automapper

1

Я использую AutoMapper. Я столкнулся с проблемой сопоставления моего DTO с объектом базы данных. Я хочу обновить свои существующие данные в базе данных, сопоставляя мой обновленный DTO с DB Entity с помощью AutoMapper, а не вручную сопоставляя DTO с DB Entity.

  • 0
    Я посетил эту ссылку, но это не помогло мне ....... lostechies.com/jimmybogard/2009/09/18/…
  • 0
    Где твой код? Что вы пробовали?
Показать ещё 2 комментария
Теги:
mapping
automapper
dto

1 ответ

0

Прежде всего определите свой DTO, связанный с объектом. Например

public class Author {
    public string Name { get; set; }
}

public class Book {
    public string Title { get; set; }
    public Author Author { get; set; }
}

public class BookDTO {
    public string Title { get; set; }
    public string Author { get; set; }
}

Затем запустите свой Automap где-нибудь в вашем стартовом коде приложения:

AutoMapper.Mapper.CreateMap<Book, BookDTO>()
    .ForMember(dest => dest.Author,
           opts => opts.MapFrom(src => src.Author.Name));

AutoMapper.Mapper.CreateMap<Book, BookDTO>().ReverseMap()

Теперь и пример метода обновления от DTO до объекта:

    public int Update(BookDTO dto) {
        var entity = _context.Books.FindAsync(dto.id);
        if (entity == null) throw new ItemNotFoundException(dto.id);
        AutoMapper.Mapper.Map(dto, entity)
        return _context.SaveChanges();
    }

И еще один пример для вставки:

    public int Insert(BookDTO dto) {
        var entity = AutoMapper.Mapper.Map<Book>(dto);
        _context.Provinces.Add(entity);
        return _context.SaveChanges();
    }

Дополнительная информация о http://cpratt.co/using-automapper-getting-started/

Ещё вопросы

Сообщество Overcoder
Наверх
Меню