1

Automapper 文档中有一个用于继承的示例,如下所示:

public class Order { }
public class OnlineOrder : Order { }
public class MailOrder : Order { }

public class OrderDto { }
public class OnlineOrderDto : OrderDto { }
public class MailOrderDto : OrderDto { }

Mapper.CreateMap<Order, OrderDto>()
    .Include<OnlineOrder, OnlineOrderDto>()
    .Include<MailOrder, MailOrderDto>();
Mapper.CreateMap<OnlineOrder, OnlineOrderDto>();
Mapper.CreateMap<MailOrder, MailOrderDto>();

我想做类似的事情,但我不想在域模型中使用继承。我正在使用实体框架,并且我在实体框架中使用继承,直到我发现当你有许多派生实体(我有 30 个)时性能非常糟糕。这个性能问题网上有讲。我想摆脱继承并使用标准的关系模型,但我无法弄清楚我需要做什么才能让它与 Automapper 一起使用。

修改上面的例子,我的情况是这样的:

// Domain models in Entity Framework
public class Order
{
  public virtual OnlineOrder OnlineOrder { get; set; }
  public virtual MailOrder MailOrder { get; set; }
}

public class OnlineOrder
{
  public virtual Order Order { get; set; }
}

public class MailOrder 
{ 
  public virtual Order Order { get; set; }
}

// My DTOs
public class OrderDto { }
public class OnlineOrderDto : OrderDto { }
public class MailOrderDto : OrderDto { }

因此您可以看到,现在域对象不使用继承,而是像标准关系数据库一样简单地相互链接。我仍然希望 DTO 对象使用继承。在这个例子中我将如何使用 Automapper?

4

0 回答 0