我有一個LINQ到SQL對象,有一些其他表的引用如何MapFrom集合?自動映射器
我想映射它到一個虛擬機,但沒有任何獲取捕獲。
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映射到列表,否? (我的意思是,你有許多項目對一個「A」和一個項目對一個「G」)也許這就是爲什麼你很難映射的東西。 –
Remus
2011-02-23 22:03:40
如果你在「G」有一個屬性「IsVip」,也許你應該使它成爲一個bool類型。另外,你可以提一下你在這裏使用的邏輯嗎?如何認識到「A」是否是「VIP」?它是基於A.Vip對象是否爲空? – Remus 2011-02-23 22:41:56