Как я могу игнорировать свойства в источнике, когда свойство является нулевым, используя AutoMapper? - PullRequest
0 голосов
/ 04 ноября 2018

У меня есть сценарий, в котором я передаю существующий объект, который будет продублирован в общем виде. У меня есть дерево иерархии сущностей с соответствующим набором классов dto следующим образом: План ---> Роли --------> Особенности // отношения многие ко многим.

Возможности взаимосвязаны между собой. Когда я дублирую, я прохожу план и идентификаторы ролей и сбрасываю их на 0. На этом этапе отношение многие ко многим нарушается. Кроме того, карта не работает, потому что идентификаторы ролей не воссоздаются при вставке. Для того чтобы сохранение работало, функции должны быть проигнорированы. Так что моя сущность после игнорирования выглядит так.

План

---> Роли

Дто все еще выглядит так:

PlanDto

-------- RoleDto

---------------- ОсобенностиDto

Далее мне нужно отправить обновленную копию PlanDto и RoleDto, чтобы она работала естественным образом:

return Mapper.Map(plan, plandto);

Коллекция объектов в исходном объекте пуста, а пункт назначения содержит коллекцию оригинальных много-много элементов. Это нормально, что у многих-многих элементов нет соответствующих идентификаторов ролей, потому что нет свойства FeatureDto.RoleId. План и роли будут иметь новые идентификаторы, и тогда я смогу запустить вызов старых списков функций и нового идентификатора роли _planService.AddRoleFeatures (plandto); * +1020 *

public void AddRoleFeatures(PlanDto plandto)
{
   foreach(var role in plandto.Roles) 
   foreach(var feature in role.Features) { feature.RoleId = role.Id; }
}

Мой мейпер теперь работает, потому что я сопоставил элементы FeatureDto с правильным количеством элементов таблицы, а идентификаторы ролей теперь верны. Я просматривал всюду в AutoMapper, и ничто, кажется, не позволяет мне сохранять мою коллекцию на типе назначения, когда тип источника является нулем. Хотя многие вещи казались многообещающими, все результаты приводят к одной из трех проблем: ошибка, ноль, пустая коллекция.

Я посмотрел на пакет AutoMapper.Collections, но похоже, что он ориентирован на объединение списков, а когда коллекции нет, он не сохраняет список назначения по мере необходимости.

...