Edu*_*tes 5 many-to-many entity-framework dto automapper
如果我在EF中定义了多对多关系:
public class StudentImage
{
public int StudentId { get; set; }
public int ImageId { get; set; }
public int Order { get; set; }
public virtual Student Student { get; set; }
public virtual Image Image { get; set; }
}
public class Student
{
public int Id { get; set; }
public string Name { get; set; }
public virtual ICollection<StudentImage> Images { get; set; }
}
public class Image
{
public int Id { get; set; }
public string Filename { get; set; }
public virtual ICollection<StudentImage> Students { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
而DTO的:
public class ImageDTO
{
public int Id { get; set; }
public string Filename { get; set; }
public int Order { get; set; }
}
public class StudentIDO
{
public int Id { get; set; }
public string Name { get; set; }
public ICollection<ImageDTO> Images { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我如何使用Automapper从Student映射到StudentDTO以及从Image映射到ImageDTO?
映射
Mapper.CreateMap<Student, StudentIDO>();
Mapper.CreateMap<StudentImage, ImageDTO>()
.ForMember(d => d.Id, opt => opt.MapFrom(s => s.ImageId))
.ForMember(d => d.Filename, opt => opt.MapFrom(s => s.Image.Filename));
Mapper.CreateMap<StudentIDO, Student>()
.AfterMap((s, d) =>
{
foreach (var studentImage in d.Images)
studentImage.StudentId = s.Id;
});
Mapper.CreateMap<ImageDTO, StudentImage>()
.ForMember(d => d.ImageId, opt => opt.MapFrom(s => s.Id));
Run Code Online (Sandbox Code Playgroud)
用法
var studentDTO = Mapper.Map<StudentIDO>(student);
var student = Mapper.Map<Student>(studentDTO);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5219 次 |
| 最近记录: |