【发布时间】:2015-03-11 05:05:08
【问题描述】:
我们正在启动一个新的多层架构。过去,我使用 AutoMapper 将数据传输对象映射到业务对象,反之亦然。一位同事建议,我们应该将 dto 包装在业务对象中,而不是映射。可能是通过在业务对象的构造函数中注入 dto。然后我们可以在没有映射的情况下即时访问 dto 的属性值。
问题:
是否推荐这种方法?
我知道,如果业务对象知道 dto,您就会引入紧密耦合。此外,通过在业务对象和 dto 之间创建 1:1 关系,您失去了一些灵活性,这通常 - 使用灵活的映射 - 将是 n:m 关系。
(见:Best Practices For Mapping DTO to Domain Object?)
这个缺点是似乎没有人使用包装方法的原因还是我错过了什么?
这是一个快速演示,我所说的“包装”是什么意思:
public class BusinessObject
{
private Dto dto;
public BusinessObject()
{
this.dto = new Dto();
}
public BusinessObject(Dto dto)
{
this.dto = dto;
}
public int Id
{
get { return dto.Id; }
set { dto.Id = value; }
}
}
public class Dto
{
public int Id { get; set; }
}
感谢您的帮助!
托尔斯滕
【问题讨论】: