我正在使用AutoMapper。我正面临着将我的DTO映射到数据库实体的问题。我想通过使用AutoMapper将我更新的DTO映射到数据库实体来更新数据库中的现有数据,而不是手动将DTO映射到数据库实体。
答案 0 :(得分: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();
}
的更多信息