开发者

AutoMapper Mapping fields to Class

开发者 https://www.devze.com 2023-03-22 03:25 出处:网络
I\'m trying to accomplish the following. I have a DTO that returns values from the database and I\'d like to map the DTO to a Model.My model has a property that has a class type.I\'d like to set that

I'm trying to accomplish the following. I have a DTO that returns values from the database and I'd like to map the DTO to a Model. My model has a property that has a class type. I'd like to set that property to a new instance of the class using the values in the DTO. So here is some code that shows what I'm trying to do.

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;开发者_Go百科 }
    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}));
}

When I use the map created here, I end up with the ItemModel's ItemPart property having values of 0 and ItemPartName of 'ItemPartName'

Please let me know if there is anymore info I can provide and thanks for viewing.


It seems that my logic was fine and that the syntax is correct. It was a simple mistake in my code where I was calling the ItemPart property. Originally, my model contained the ID (int) and Name property (string) of the item part (naming is different in my project than in my example). I replaced those two properties to a single property using the Class Type ItemPartModel, which encapsulated both fields. My UI code wasn't updated and was simply displaying the Class Item part .ToString(). Once I updated my UI code, it worked. Anyway, that's my excuse, however I will leave this question as is since I did have some trouble finding a solution to what I was trying to do here with the Automapper and someone else may find this helpful.

0

精彩评论

暂无评论...
验证码 换一张
取 消