使用AutoMapper的DTO映射

本文关键字:映射 DTO AutoMapper 使用 | 更新日期: 2023-09-27 18:29:33

我有三个表tableA、tableB和tableC,其中tableB有一个来自tableA的外键并且表C具有来自表B的外键,并且与表D类似。

我有一个linq查询,我正在将数据作为:

var temp  = await dbContext.tableA.Include(p=>p.tableB.Select(q=>q.tableC).Select(s=>s.tableD)).ToListAsync();

我在这里得到了正确的数据。但当我把它映射到DTO时,就像这样:

{
List<DTOtableA> dtotest = new List<DTOTableA>();
//From DB
var list = _repo.GetData();
dtotest = list.Select(p=>Mapper.Map(p,new DTOTableA())).ToList();
}

在这里,只有表A的数据被填充到dtoTest中,即使DTOTableA在其类中引用了DTOTableB,DTOTableB也引用了DTOTableC.

有什么解决方案吗?

使用AutoMapper的DTO映射

我认为,您不需要mapper。你可以这样使用:

列表<DTOtableA>dtotest=等待dbContext.tableA.Include(p=>p.tableB.Select(q=>q.tableC).Select(s=>s.tableD)).ToListAsync();

dtotest[0].tableB.attributeOfTableB