从数据库中提取对象(实体)列表后,我想更新那些对象,但只更新某些属性,然后将更改保存到DB,完成映射后,它将失去对更改的跟踪并且上下文未显示任何更改。 / p>
我尝试为AutoMapper制作自定义值解析器,但由于映射后ip仍然为0,我失败了。
class A { int id; string Name; }
class B { string Name;}
List<B> b = new List<B>() { "t", "g" };
var result = ctx.A.ToList();
this.Mapper.Map<IList<B>,IList<A>>(b,result);
ctx.A.SaveChanges();
答案 0 :(得分:1)
问题是您正在使用项目列表。
this.Mapper.Map<IList<B>,IList<A>>(b,result);
可以,将B
值映射到result
值...但是不要将result
更改为新的对象类型,不是。此代码中没有任何内容告诉AutoMapper不要更改列表中的项目 。
这是因为Automapper无法关联b
中的哪些项目应映射到result
中的哪些项目。此外,如果商品数量不同,该怎么办?
您可以使用以下命令自己强制使用
result = result
.Zip(b, (r,b2) => mapper.Map<B,A>(b2,r) )
.ToList()