Используйте AutoMapper для добавления, обновления и удаления элементов в списке

Ни один из других ответов не работал для меня. После некоторого tinkering я удалил sklearn:

pip uninstall sklearn

Затем я удалил папку sklearn отсюда: (скопируйте путь к вашей системе и версии python)

C:\Users\%USERNAME%\AppData\Roaming\Python\Python36\site-packages

И установили его от колеса с этого сайта: link

Ошибка была там, вероятно, из-за конфликта версий с установленным в другом месте sklearn.

2
задан Superman.Lopez 16 January 2019 в 15:13
поделиться

2 ответа

Благодаря Ивану Стоеву я начал изучать AutoMapper.Collection , который действительно является расширением, которое я надеялся найти. После реализации мои списки обновляются так, как я хотел. Конфигурация проста в моем использовании, так как мне нужно только указать Id моих объектов.

Моя начальная конфигурация изменена на:

using AutoMapper;
using AutoMapper.EquivalencyExpression;
[....]
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddAutoMapper(cfg => {
                cfg.AddCollectionMappers();
                });
        }
[....]

И мой профиль отображения:

    CreateMap<MainObject, MainObjectResource>().ReverseMap()
        .ForMember(m => m.Id, opt => opt.Ignore());

    CreateMap<SubItem, SubItemResource>().ReverseMap()
        .EqualityComparison((sir, si) => sir.Id == si.Id);
0
ответ дан Superman.Lopez 16 January 2019 в 15:13
поделиться

Эта проблема труднее решить, чем кажется на первый взгляд. Вам достаточно легко составить собственное отображение своих списков, потому что вы знаете свое приложение; AutoMapper нет. Например, что делает исходный элемент равным целевому элементу, так что AutoMapper сможет различить, что он должен сопоставлять существующий, а не добавлять? ПК? Какое свойство является ПК? Является ли это свойство одинаковым как для источника, так и для пункта назначения? На эти вопросы вы можете легко ответить в своем AfterMap, не так много для AutoMapper.

В результате AutoMapper всегда отображает коллекции как новые элементы. Если это не то поведение, которое вам нужно, то тут приходят такие вещи, как AfterMap. Также имейте в виду, что AutoMapper не предназначен специально для работы с EF, что действительно является проблемой, а не AutoMapper. Отслеживание изменений в EF является причиной проблем с отображением коллекции AutoMapper по умолчанию. В других ситуациях и сценариях это не проблема.

0
ответ дан Chris Pratt 16 January 2019 в 15:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: