Automapper отсутствует конфигурация карты типов - PullRequest
0 голосов
/ 16 марта 2020

Не могу понять, что здесь происходит, я настроил AutoMapper следующим образом

services.AddAutoMapper(typeof(MetingenView), typeof(Meting));

А в контроллере вот так:

public MetingenController(IMapper mapper)
{
    this._mapper = mapper;
}

После, Я использую это так:

var entity = await this.Context.MetingenView.AsNoTracking().FirstOrDefaultAsync(g =>g.IdMeting == key);
if (entity == null)
{
    return NotFound();
}
data.Patch(entity);
var meting = await this.Context.Meting.FirstOrDefaultAsync(m => m.IdMeting == key);
this._mapper.Map(entity, meting);

Затем выдается ошибка:

AutoMapper.AutoMapperMappingException: отсутствует конфигурация карты типов или не поддерживается отображение.

EDIT:

Вот классы Meting и MetingenView:

public partial class Meting
{
    public int IdMeting { get; set; }
    public int IdKoeling { get; set; }
    public int IdWerknemer { get; set; }
    public int IdGebouw { get; set; }
    public int Temperatuur { get; set; }
    public DateTime AfgenomenTijd { get; set; }
    public string ProductNaam { get; set; }
    public string Actie { get; set; }
    public DateTime? DatumOntstaan { get; set; }
    public DateTime? DatumMutatie { get; set; }
    public int IndVerwijderd { get; set; }
    public DateTime? DatumVerwijderd { get; set; }

    public virtual Gebouw IdGebouwNavigation { get; set; }
    public virtual Koeling IdKoelingNavigation { get; set; }
    public virtual Werknemer IdWerknemerNavigation { get; set; }
}



public partial class MetingenView
{
    [Key]
    public int IdKlant { get; set; }
    public string Locatie { get; set; }
    public string SoortKoeling { get; set; }
    public int IdMeting { get; set; }
    public int IdKoeling { get; set; }
    public int IdWerknemer { get; set; }
    public int IdGebouw { get; set; }
    public int Temperatuur { get; set; }
    public string Actie { get; set; }
    public string ProductNaam { get; set; }
    public DateTime AfgenomenTijd { get; set; }
}

1 Ответ

1 голос
/ 16 марта 2020

Я думаю, что сопоставление между Meting и MetingenView не настроено в AutoMapper. Если вы используете Asp. Net Core, вы можете создать профиль.

public class MetingProfile : Profile
{
    public MetingProfile()
    {
        CreateMap<MetingenView, Meting>();
    }
}

Это создаст отображение по умолчанию, в котором два типа имеют одинаковое свойство. Если вы хотите настроить сопоставление свойств вручную, будет использоваться функция ForMember().

Например, если вы sh указали, что свойство MetingenView.IdGebouw сопоставляет Meting.IndVerwijderd, вы можете закодировать это:

CreateMap<MetingenView, Meting>()
    .ForMember(dest=>dest.IdGebouw, opt=>opt.MapFrom(src=>src.IndVerwijderd));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...