用于列表方案的AutoMapper似乎只重复映射列表中的第一个对象

我正在开发一个MVC 3应用程序,并使用AutoMapper在我的ViewModel和我的实体之间移动数据。 我有一个场景,我需要在两个列表之间移动数据。 出于某种奇怪的原因,AutoMapper似乎只复制源对象中的第一个对象,然后似乎将同一个对象复制n次到目标列表。 例如,假设您有2个列表,源包含6个实体项,而目标包含0个项,因为它刚刚实例化。 位置源[0]的项目被复制到目的地,然后重复复制源[0]以获得源列表中相同数量的项目,在这种情况下为6.我不明白可能是什么原因。

这是AutoMapper配置文件:

public static class AutoMapperConfigurator { public static void Configure() { Mapper.CreateMap(); Mapper.CreateMap(); } } 

这是Global.asax文件设置

 protected void Application_Start() { AutoMapperConfigurator.Configure(); } 

这是我调用Map方法的位置

 userSearchModel.UserList = Mapper.Map<IList, IList>(userEntities); 

所以,一个合适的解决方案,但不是我们在使用AutoMapper时所需要的。

当您错误地覆盖正在映射的实体/模型的Equals方法时,此问题很常见。

例如,如果您尝试映射上面的对象列表,您将只获得SourceEntity的第一个对象。

  public class SourceEntity { public string MyField {get; set;} public override bool Equals(object obj) { return true; } } public class TargetEntity { public string MyField {get; set;} } 

检查Equals方法是否返回true。

对于有这个问题的其他人来说,好像文档不适合我。 一位同事提出以下建议:

 userSearchModel.UserList = UserEvent.Select(item => Mapper.Map(item)); 

它就像一个魅力。