다른 테이블에 대한 참조가있는 SQL 객체에 linq가 있습니다.지도에서 어떻게 컬렉션에서? 자동 매퍼
VM에 매핑하려고하지만 캡처 된 내용이 없습니다.
Mapper.CreateMap<A, G>();
// A is the linq to sql object
A.MyList // this is a collection that I am trying to get the value out of A.MyList.Id
// G is my View Model
public class G
{
public string AMyListId {get; set;}
}
vm = Mapper.Map<List<A>, List<G>>(aListOfAFromDb);
이것은 항상 null에서 되돌아옵니다. 나는 그것을 시도해야 수동으로해야 할 것이라고 생각했다.
Mapper.CreateMap<A, G>().ForMember(dest => dest.AMyList , opt => opt.MapFrom(src =>????))
;
그러나 목록에서 가져 오는 중이므로 선택할 속성을 제공하지 않습니다.
내가 "myList에"의 목록이없는 것을 깨달았다 편집
그것은 하나 하나에이어야한다. 나는 아직도 내가하고 싶은 일을하려고하는 데 문제가있다.
나는 가지고있다
Mapper.CreateMap();
A.Vip.UserId // again my linq object is A
// G is my View Model
public class G
{
public string IsVip {get; set;}
}
vm = Mapper.Map<List<A>, List<G>>(aListOfAFromDb);
Mapper.CreateMap<A, G>().ForMember(dest => dest.IsVip, opt => opt.AddFormatter<VipFormatter>());
public class VipFormatter : IValueFormatter
{
public string FormatValue(ResolutionContext context)
{
bool value = (bool)context.SourceValue;
if (value)
{
return "Yes";
}
return "No";
}
}
아직까지는 아무 것도 없습니다. 왜 그런지 모르겠습니다. 내 재산을 "AVipUserId"로 변경해야합니까? 아니면지도에 어떻게 든 말해 주시겠습니까?
A가 목록을 포함하고 G가 목록의 항목에 대한 ID를 포함하면 A부터 List으로 매핑해야합니까? 아니요. (즉, 하나의 "A"와 하나의 "G"로 많은 항목을 가짐) 어쩌면 당신이 어려운 일을 매핑하는 이유 일 수 있습니다. –
Remus
"G"에 "IsVip"속성이 있다면 어쩌면 bool 유형으로 만들어야합니다. 또한 여기에서 사용하는 논리에 대해 언급 할 수 있습니까? "A"가 "VIP"인지 어떻게 알 수 있습니까? A.Vip 객체가 null인지 여부에 따라 결정됩니까? – Remus