Использование automapper.collection в ядре aspnet и ef core не обновляет отредактированные записи в коллекции.

Я использую Asnet Boilerplaite Aspnet Core и EF Core. Я инициализировал automapper.collection в PreInitialize следующим образом:

Configuration.Modules.AbpAutoMapper().Configurators.Add(
    cfg =>{
        cfg.AddCollectionMappers();
        cfg.CreateMap<OrderDTO, Order>().EqualityComparison((odto, o) => odto.ID == o.ID);
        cfg.CreateMap<OrderItemDTO, OrderItem>().EqualityComparison((odto, o) => odto.ID == o.ID);
    }
);

Я использую ObjectMapper.Map(odto, o); для отображения между dto и сущностью, но я обнаружил, что новые элементы порядка в коллекции элементов порядка в пределах заказов сохраняются, но любые изменения в существующих записях, по-видимому, не обновляются в базе данных.

Сущность заказа и коллекция загружаются из хранилища с использованием следующего:

var @item = await _orderRepository.GetAll().Include(x => x.Items).Include(x => x.Items).ThenInclude(x => x.Product).AsNoTracking().FirstOrDefaultAsync(x => x.Id == id);

вот метод обновления:

    public override async Task<OrderDto> Update(OrderDto input)
    {
        var ord = await _orderManager.GetA(input.Id);

        ObjectMapper.Map(input, ord);

        CheckErrors(await _orderManager.UpdateA(ord));

        return MapToEntityDto(await _orderManager.GetA(input.Id));
    }

Значения переменных input и ord следующие при попытке обновления записи orderitem:

    input   {OrderDto}  
    Code    "1" string
    Id  1   int
    Items   Count = 1   System.Collections.Generic.ICollection<OrderItemDto>
    -       [0] {OrderItemDto}  
                Id  1   int
                OrderId 1   int
        +       Product {ProductLoadDto}
                ProductId   4   int
                Quantity    22  double
    MovementDate    {28-Jul-18 2:36:41 AM}  System.DateTime


    ord {[Order 1]} Order
    Code    "1" string
    Id  1   int
    Items   Count = 1   System.Collections.Generic.ICollection<OrderItem>
    -       [0] {OrderItem 1}
            Id  1   int
            OrderId 1   int
    +       Product {[Product 4]}   Venues.Products.Product
            ProductId   4   int
            Quantity    1   double
    MovementDate    {28-Jul-18 12:06:41 PM} System.DateTime

Есть ли что-то, чего мне не хватает, чтобы automapper.collection автоматически обрабатывал изменения в коллекции?

1 ответ

Вы пробовали репозиторий Entity Framework Core?

https://github.com/AutoMapper/AutoMapper.Collection.EFCore/tree/development

Я использовал указанное здесь расширение для решения проблемы:https://entityframeworkcore.com/knowledge-base/39452054/asp-net-core-with-ef-core---dto-collection-mapping

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