내 객체가 기본 생성자가없는, 그들은 모두 내가 다음 줄을 추가기본 생성자없이 객체를 생성하는 Automapper을 사용하는 방법
new Entity(int recordid);
의 서명이 필요 Automapper가 기본 생성자를 기대하고있는 문제를 해결하지만, 매핑되는 유일한 요소는 레코드 ID입니다.
정상적인 매핑을 수행하려면 어떻게해야합니까? 수동으로 속성을 매핑하지 않고도 매핑 할 엔터티의 모든 속성을 얻는 방법?
내 객체가 기본 생성자가없는, 그들은 모두 내가 다음 줄을 추가기본 생성자없이 객체를 생성하는 Automapper을 사용하는 방법
new Entity(int recordid);
의 서명이 필요 Automapper가 기본 생성자를 기대하고있는 문제를 해결하지만, 매핑되는 유일한 요소는 레코드 ID입니다.
정상적인 매핑을 수행하려면 어떻게해야합니까? 수동으로 속성을 매핑하지 않고도 매핑 할 엔터티의 모든 속성을 얻는 방법?
을보십시오. 여기에 데모가 있습니다 :
using System;
using AutoMapper;
public class Source
{
public int RecordId { get; set; }
public string Foo { get; set; }
public string Bar { get; set; }
}
public class Target
{
public Target(int recordid)
{
RecordId = recordid;
}
public int RecordId { get; set; }
public string Foo { get; set; }
public string Bar { get; set; }
}
class Program
{
static void Main()
{
Mapper
.CreateMap<Source, Target>()
.ConstructUsing(source => new Target(source.RecordId));
var src = new Source
{
RecordId = 5,
Foo = "foo",
Bar = "bar"
};
var dest = Mapper.Map<Source, Target>(src);
Console.WriteLine(dest.RecordId);
Console.WriteLine(dest.Foo);
Console.WriteLine(dest.Bar);
}
}
ConvertUsing은 뷰 모델에서 모델로 매핑 할 때 더 많은 유연성을 제공합니다. ConvertUsing으로 ConstructUsing을 사용할 수있는 방법이 있습니까? viewModel에서 생성자를 사용하여 모델에 매핑 할 때 몇 가지 속성을 매핑하고 싶지만 모델에서 모델로 매핑 할 때는 모든 속성을 매핑해야합니다. – akd
당신은 ConstructUsing
대신 ConvertUsing
사용할 수
Mapper.CreateMap<EntityDTO, Entity>().ConstructUsing(s => new Entity(s.RecordId));
RecordId는 어디에서 왔습니까? EntityDTO? 그렇다면 AutoMapper.org에있는 최신 버전의 AutoMapper는 매핑 생성자 인수를 지원하므로 여기에서 도움이 될 수 있습니다. –
ConstructUsing을 사용해야합니다. [이 답변]에서 봐 [1] 자세한 내용 에 대한 [1] : http://stackoverflow.com/questions/2239143/automapper-how-to-map-to-constructor-parameters-instead -of-property-setters – boca