Как заставить Automapper работать с не найденными входными свойствами?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Как заставить Automapper работать с не найденными входными свойствами?

Сообщение Anonymous »

У меня есть два класса: CustomerLocation и UILocation. У обоих есть свойство Product, но в обоих случаях тип этих Product различен.
Я выполняю следующий фрагмент исходного кода и получить сообщение об ошибке:

Код: Выделить всё

try
{
UiLocation uiLocation = _mapper.Map(customerLocation);
}
catch (Exception ex1)
{
_logger.Error($"An exception happened .... Exception message=[{ex1.Message}]");
}
Сообщение об исключении:

Код: Выделить всё

Error mapping types.

Mapping types:
CustomerLocation -> UiLocation
Company.Customer.Server.Domain.CustomerLocation -> Company.Customer.Class.UiLocation

Type Map configuration:
CustomerLocation -> UiLocation
Company.Customer.Server.Domain.CustomerLocation -> Company.Customer.Class.UiLocation

Destination Member:
Product
]
Насколько я понимаю, Mapper.Map выполняет сопоставление, что означает, что все свойства исходного объекта копируются в свойство с тем же именем. В случае, если тип упомянутого свойства отличается, там выполняется то же самое сопоставление.
У меня этот код работает нормально, но при работе в системе клиента я вижу упомянутое сообщение об ошибке. Очевидно, что-то не так с отображением свойства Product, но что??? Может ли кто-нибудь указать мне направление?

(А пока понятно: исходный Продукт не найден: в БД заполнен идентификатор, но этот идентификатор не соответствует с реальным продуктом).
Обновление после некоторой информации:

Я добавил следующую строку (чтобы разрешить пустые направления):

Код: Выделить всё

var locationConfiguration = new MapperConfiguration(cfg =>
{
cfg.AllowNullDestinationValues = true;  // This allows AutoMapper to return null for any destination properties if the source is null
cfg.CreateMap();
});
Однако последствием этого является то, что все сопоставление больше не работает (даже если с продуктом все в порядке).

Что еще я могу сделать? иметь? (Источник не нулевой, но не найден: есть идентификатор, заполненный в БД, но нет числа, соответствующего этому идентификатору.
Что теперь?

Подробнее здесь: https://stackoverflow.com/questions/791 ... properties
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»