我有一个Application
类型的列表。我想将该对象转换为ApplicationDTO
类型的对象。在Application
业务对象中,有一个类型为Applicant
的申请人列表。现在我的DTO具有相同的列表,但我正在努力如何将业务对象的列表成员分配给DTO内的列表。我有多个这样的事件,其中不知道我在列表中有多少项。
下面是一个例子:
// List of business objects
List<Application> ApplicationList = await _dbContextDigitVP.Applications.FromSqlRaw("Exec dbo.GetApplication {0}", id).ToListAsync();
//DTO object
ApplicationDTO applicationDTO = new ApplicationDTO
{
ApplicationNumber = Application.ApplicationNumber,
Country = Application.Country,
ApplicationUuid = Application.ApplicationUuid,
PwEmployeeAdUserName = Application.PwEmployeeAdUserName,
Category = new ApplicationCategoryDTO
{
Category = Application.Category?.Category
},
Applicants = new List<ApplicantDTO>()
{
// add members of business object
}
};
我可以用for循环来检查它,但是有没有办法在对象定义内部完成呢?
3条答案
按热度按时间vyswwuz21#
您可以使用
AutoMapper
。一旦你有了你的类型,你就可以使用MapperConfiguration和CreateMap为这两种类型创建一个Map。通常每个AppDomain只需要一个MapperConfiguration示例,并且应该在启动时示例化。
左边的类型是源类型,右边的类型是目标类型。若要执行Map,请调用Map重载之一:
91zkwejq2#
您也可以使用LINQ来转换对象,如不使用AutoMapper。
nc1teljy3#
可以使用Automapper将数据从一个对象Map到另一个对象。
为
ApplicationDTO
与Application
、ApplicationCategory
与ApplicationCategoryDTO
以及Applicant
与ApplicantDTO
之间的配置Map创建如下自动Map器配置在构造函数中,可以像下面这样初始化Map器
当你选角的时候你可以这样做,