鑑於未來的DTO:Automapper:保留收藏沒有他們的映射
public class OrderDTO{
public int IdOrder{ get; set; }
public int TotalPrice { get; set; }
public IEnumerable<ProductDTO> Products { get; set; }
}
public class ProductDTO{
public int IdProduct { get; set; }
public int Description { get; set; }
}
的問題是我想的訂單映射到OrderDTO,但有時候,我不需要取產品。
當我需要的一切,我做了下:
AutoMapper.Mapper.CreateMap<Order, OrderDTO>().ForMember(
dest => dest.Products,
opt => opt.MapFrom(
// Custom Map the Product with ProductDTO
order => order.Products.Where(n => n.Active).Select(
aProduct => new ProductDTO{
IdProduct = aProduct.IdProduct,
Description = aProduct.Description
}
)
)
);
它工作的偉大,但問題是,當我不需要產品,接下來我要做的:
AutoMapper.Mapper.CreateMap<Order, OrderDTO>()
但它返回一個錯誤:
Missing map from Product to ProductDTO. Create using Mapper.CreateMap.
所以,我怎樣才能避免做創建一個Mapper的集合我不需要?? (我不想從我不需要的數據庫中檢索數據)。
謝謝,但它不是一個解決方案,因爲我會有很多DTO的,因爲這是一個例子,但我有一個DTO 8 DTO的子集,所以計算我應該有的總的可能組合。 –
雖然最後的提示非常有用!謝謝 –
@ArielScherman,爲什麼你想加載所有可能的組合?例如。如果您將訂單與客戶,產品收集,折扣收集,意見收集和帳單地址。爲什麼你想要OrderWithCustomerButWithoutProductsAndDiscounts? –