3 回答

TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超3個(gè)贊
將spt_detail映射到spt_detail_extended。
您應(yīng)該僅為模型創(chuàng)建映射規(guī)則,如下所示:
Mapper.Initialize(cfg => { cfg.CreateMap<spt_detail, spt_detail_extended>(); });
之后,您應(yīng)該使用以下結(jié)構(gòu):
List<spt_detail_extended> extendeds = Mapper.Map<List<spt_detail_extended>>(details);
如果您想映射其他模型,只需添加或編輯您的配置即可。

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超9個(gè)贊
不要映射列表,而是像這樣映射:
Mapper.Initialize(n => n.CreateMap<spt_detail, spt_detail_extended>());
你打電話去做地圖會(huì)保持不變:
List<spt_detail_extended> cenr = AutoMapper.Mapper.Map<List<spt_detail>, List<spt_detail_extended>>(details);

TA貢獻(xiàn)1921條經(jīng)驗(yàn) 獲得超9個(gè)贊
你在這里錯(cuò)過了兩個(gè)步驟。
第一個(gè)是您需要初始化業(yè)務(wù)對(duì)象的列表,而不是僅初始化單個(gè)業(yè)務(wù)對(duì)象。您從數(shù)據(jù)庫中檢索列表(使用 .Tolist())
這是我如何初始化對(duì)象的示例:
List <SptDetail> details = new List <SptDetail> {
new SptDetail {
Age = "10",
Name = "Marion"
},
new SptDetail {
Age = "11",
Name = "Elisabeth"
}
};
第二個(gè)失誤是您正在映射 lits,我建議您使用單個(gè)業(yè)務(wù)類對(duì)象,如下所示:
Mapper.Initialize(n => n.CreateMap<SptDetail, SptDetailExtended>()
.ForMember(obj => obj.ExProp1, obj => obj.MapFrom(src => src.Name))
.ForMember(obj => obj.ExProp2, obj => obj.MapFrom(src => src.Age)));
而洞故事的關(guān)鍵是使用。ForMember指定 wich 成員的位置,因?yàn)閷傩圆痪哂邢嗤拿Q。
這是一個(gè)代碼示例,運(yùn)行起來就像一個(gè)魅力:
internal class Program
{
public static List<SptDetailExtended> InitializeExtendedObjects()
{
var details = new List<SptDetail>
{
new SptDetail
{
Age = "10",
Name = "Marion"
},
new SptDetail
{
Age = "11",
Name = "Elisabeth"
}
};
//this is wrong db.spt_detail.ToList();
Mapper.Initialize(n => n.CreateMap<SptDetail, SptDetailExtended>()
/*you need to use ForMember*/ .ForMember(obj => obj.ExProp1, obj => obj.MapFrom(src => src.Name))
.ForMember(obj => obj.ExProp2, obj => obj.MapFrom(src => src.Age)));
//instead of this Mapper.Initialize(n => n.CreateMap<List<spt_detail>, List<spt_detail_extended>>());
//change your mapping like following too
var cenr = Mapper.Map<List<SptDetailExtended>>(details);
return cenr;
}
private static void Main(string[] args)
{
var result = InitializeExtendedObjects();
foreach (var sptDetailExtended in result)
{
Console.WriteLine(sptDetailExtended.ExProp1);
Console.WriteLine(sptDetailExtended.ExProp2);
}
Console.ReadLine();
}
}
希望這可以幫助!
- 3 回答
- 0 關(guān)注
- 188 瀏覽
添加回答
舉報(bào)