2011-07-22 71 views
0

我试图完成以下。我有一个从数据库返回值的DTO,我想将DTO映射到一个模型。我的模型具有一个类类型的属性。我想使用DTO中的值将该属性设置为类的新实例。所以这里是一些代码,显示了我想要做的事情。AutoMapper映射字段到

public class ItemDTO { 
    public int ItemID { get; set; } 
    public int ItemPartID { get; set; } 
    public string ItemPartName { get; set; } 
} 

public class ItemModel { 
    public int ItemID { get; set; } 
    public ItemPartModel ItemPart { get; set; } 
} 

public class ItemPartModel { 
    public int ItemPartID { get; set; } 
    public string ItemPartName { get; set; } 
} 


public void DoMapping() { 
    Mapper.CreateMap<ItemDTO, ItemModel>() 
      .ForMember(m => m.ItemPart, 
         dto => dto.MapFrom(ipm => new ItemPartModel() { 
               ItemPartID = ipm.ItemPartID, 
               ItemPartName = ipm.ItemPartName})); 
} 

当我使用这里创建的地图,我结束了和ItemPartName 0具有ItemModel的ItemPart属性值“ItemPartName”

请让我知道是否有再信息,我可以提供和感谢您的观看。

回答

0

看来我的逻辑很好,语法正确。在我调用ItemPart属性的代码中,这是一个简单的错误。最初,我的模型包含项目部分的ID(int)和Name属性(字符串)(命名在我的项目中与我的示例中不同)。我使用类型ItemPartModel将这两个属性替换为单个属性,该类型封装了这两个字段。我的UI代码没有更新,只是显示了类项目部分.ToString()。一旦我更新了我的UI代码,它就起作用了。无论如何,这是我的借口,但是我会留下这个问题,因为我在使用Automapper时遇到了一些问题,找不到解决办法,而其他人可能会觉得这很有帮助。