AutoMapper将字段映射到Class

时间:2011-07-22 20:58:11

标签: automapper

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

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}));
}

当我使用这里创建的地图时,我最终得到了ItemModel的ItemPart属性,其值为0,ItemPartName为'ItemPartName'

如果我能提供更多信息,请告诉我。感谢您查看。

1 个答案:

答案 0 :(得分:0)

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