Игнорировать и DoNotValidate не работает для AutoMapper 8.1 и .NET Core 2.1 - PullRequest
0 голосов
/ 28 мая 2019

Я разработал функцию Azure в .net core и настроил automapper в startup.cs на builder.Services.AddAutoMapper(Assembly.GetAssembly(this.GetType()));

Я пытаюсь создать карту между классом домена (таблица в ядре EF) и DTO. Доменный класс имеет свойство RowVersion. Я хочу, чтобы это свойство игнорировалось при отображении dto в домен.

Для этого я создал класс профиля и создал собственную карту, но это не работает.

Я попробовал DoNotValidate, но, похоже, он не работает

Startup.cs

builder.Services.AddAutoMapper(Assembly.GetAssembly(this.GetType()));



   public class MapperProfile :Profile
    {
        public MapperProfile()
        {
            CreateMap<MyDto, MyDomain>().ForMember(i => i.RowVersion, opt => opt.Ignore());
        }
    }

Service.cs

_mapper.Map<myDomain>(myDtoInstance)

получая ошибку ниже

Unmapped members were found. Review the types and members below.
Add a custom mapping expression, ignore, add a custom resolver, or modify the source/destination type
For no matching constructor, add a no-arg ctor, add optional arguments, or map all of the constructor parameters

 Unmapped properties:
[5/28/2019 7:00:40 AM] RowVersion

1 Ответ

0 голосов
/ 03 июня 2019

ForMember используется для ссылки на целевые объекты, в вашем случае MyDto.

Используйте вместо ForSourceMember:

public MapperProfile()
{
     CreateMap<MyDto, MyDomain>().ForSourceMember(i => i.RowVersion, opt => opt.Ignore());
}
...