2011-02-24 43 views
0

我是automapper的新手,所以我可能会以错误的方式攻击它。我正在开发一个mvc应用程序,我想使用automapper来映射我的域模型和我的视图模型。我的观点是让IList呈现html页面。automapper没有按预期映射

这里是我的控制器代码 -

IList<viewModel> vm = Mapper.Map<IList<entity1, viewModel>(dataFromEntity1); 

这里是我的Automapper配置 -

protected override void Configure() 
{ 
    CreateMap<entity1, viewModel>(); 
} 

这里是我的ENTITY1

public class entity1 
{ 
     public virtual int id { get; set; } 
     public virtual string anything { get; set; } 

     public virtual Entity2 entity2 { get; set; } 
} 

这里是ENTITY2 -

public class entity2 
{ 
     public virtual int id_2 { get; set; } 
     public virtual string everything { get; set; } 
} 

这里是我的视图模型 -

public class viewModel 
{ 
     public string anything { get; set; } 
     public string entity2everything { get; set; } 
} 

从通过CodePlex上的文档阅读,我以为一切从ENTITY2映射会自动工作,但是当我运行测试AssertConfigurationIsValid,它entity2everything失败。

我见过帖子here,显示应该有一个entity2Dto对象映射到,但是这个绑定在哪里?我必须将其添加到我的viewModel对象吗?

我缺少映射的地方吗?我无法弄清楚这应该如何工作。 感谢您的任何想法。

回答

0

该问题似乎与属性名称框有关!

如果您将视图模型属性重命名为entity2Everything(而不是entity2everything)它应该工作。

有趣的实体2一切也似乎工作 - 我不知道这是否是由设计或AutoMapper代码中的错误。

+0

仍似乎没有工作。我从测试失败中得到的唯一消息是添加一个自定义的映射表达式,忽略或重命名entity1上的属性 – czuroski 2011-02-25 13:17:22

+0

我想我明白了。它可能与一个关系有关 - 尝试自动映射和拼合一对多。我可能最终不得不使用自定义解析器。谢谢 – czuroski 2011-02-25 13:55:26