我正在尝试完成以下操作。我有一个从数据库返回值的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'
如果我能提供更多信息,请告诉我。感谢您查看。
答案 0 :(得分:0)
似乎我的逻辑很好并且语法正确。在我调用ItemPart属性的代码中,这是一个简单的错误。最初,我的模型包含项目部分的ID(int)和Name属性(字符串)(在我的项目中命名与我的示例不同)。我使用Class Type ItemPartModel将这两个属性替换为单个属性,该类型封装了两个字段。我的UI代码没有更新,只是显示了Class Item部分.ToString()。一旦我更新了我的UI代码,它就可以了。无论如何,这是我的借口,但是我会留下这个问题,因为我在使用Automapper找到解决方案时遇到了一些麻烦,而其他人可能会觉得这很有帮助。