AutoMapper映射基类和投影

时间:2016-02-12 09:28:09

标签: asp.net-mvc entity-framework automapper automapper-4

如何映射:

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?

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

0 个答案:

没有答案