1

我如何映射这个:

public class Domain_1
{
   public DomainType DomainType { get; set; }
   public Domain_2 Domain2 { get; set; }
   public Domain_3 Domain3 { get; set; }
}

至:

public abstract class DTOBase
{
   // properties from Domain_1
}

public class DTO_1 : DTOBase
{
   // properties from Domain_2
}

public class DTO_2 : DTOBase
{
   // properties from Domain_3
}

理想情况下,域设计应该与 DTO 相同,但由于 EF6 和现有数据库限制,我不能。

目前我现在拥有的是:

this.CreateMap<Domain_1, DTOBase>()
    .ConstructUsing(SomeDTOCreatorFactoryMethod);

this.CreateMap<Domain_2, DTO_1>();

SomeDTOCreatorFactoryMethod 所做的是基于 DomainType 创建 DTO。

这很好,但我想做一些投影,比如:

var domain_Db = dbContext.Domain1.Where(d => d.Id == 1).ProjectTo<DTOBase>.SingleOrDefault();
// var result = _mapper.Map<Domain1, DTOBase>(domain_Db);

它抛出一个无法实例化抽象类的错误。我理解错误,但我如何使用工厂方法来创建 DTO?

如果我必须在某些属性上使用自定义解析器怎么办?我知道这不受支持,但有解决方法吗?

4

0 回答 0