2013-02-17 80 views
1

这是我的分类模型:铸造模型视图模型

public class Category :IAggregateRoot 
    { 
     public Guid Id { get; set; } 
     public string Name { get; set; } 

    } 

,这是我CategoryViewModel:

public class CategoryViewModel 
    { 
     public Guid CategoryId { get; set; } 
     public string Name { get; set; } 
    } 

,我想这一类转换为CategoryViewModel与Automapper,如果我改变的CategoryId在CategoryViewModel到Id,它会好的!但在这种情况下,我的控制器中没有Guid值!我怎么能把这些Guid对彼此? 也这是我映射类:

public static CategoryViewModel ConvertToCategoryViewModel(this Category category) 
     { 
      return Mapper.Map<Category, CategoryViewModel>(category); 
     } 

回答

3

在某些时候,你是一个呼叫自动映射器映射可能设置到

Mapper.CreateMap<CategoryModel, CategoryViewModel>(); 

CreateMap后,调用

.ForMember(m=>m.CategoryId, c=>c.mapfrom(d=>d.Id)). 

这会告诉自动映射器映射Id属性的categoryId属性。

编辑:完整的代码看起来是这样的:

// in app start 
Mapper.CreateMap<CategoryModel, CategoryViewModel>() 
    .ForMember(cvm => cvm.CategoryId, c => c.MapFrom(cm => cm.Id)); 

// in you mapping method: 
return Mapper.Map<CategoryModel, CategoryViewModel>(categoryModel); 
+0

我不知道我没有得到lambda表达式的东西! – 2013-02-17 14:30:45

+0

我使用这行代码,但我没有在lambda表达式中获得Id和categoryId!返回Mapper.CreateMap ()。ForMember(); – 2013-02-17 14:46:09

+0

你可以发布你现在试图使用的完整代码吗?应用程序启动时应该有一个createmap + ForMember语句,并在转换方法中运行地图调用。 – ChaseMedallion 2013-02-18 13:58:00