Наследование с автоматом

В документации 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>();

Я хочу сделать что-то подобное, но я не хочу использовать наследование в модели предметной области. Я использую Entity Framework, и я использовал наследование в Entity Framework, пока не обнаружил, что производительность крайне плоха, если у вас много производных объектов (у меня 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 для этого примера?

0 ответов

Другие вопросы по тегам