我正在尝试创建一个简单的电子商务应用程序。产品必须具有品牌,并且至少有一个类别。我一直在使用(非常重要的)Sharp Lite示例MyStore和CaTs - 所以如果您熟悉这些,您应该希望了解这一流程。我正在尝试在ProductController中创建Create动作。
1)在ProductController中,我注入了我的产品存储库和我的产品服务。
2)在Create操作中,我调用productService.CreateProductViewModel()
3)在CreateProductViewModel中,我创建了一个新的ProductFormDto,它具有我的ViewModel所需的所有属性(名称,产品代码等) - 以及类别和品牌的IEnumebles。
public CreateProductViewModel()
{
ProductFormDto = new ProductFormDto();
}
public ProductFormDto ProductFormDto { get; set; }
public IEnumerable<ProductCategory> Categories { get; set; }
public IEnumerable<Brand> Brands { get; set; }
}
我认为这将是一个非常复杂的观点。
我的问题是,使用Sharp Lite我需要使用automapper来映射我的ViewModel,如下所示:
public void Map()
{
Mapper.CreateMap<Product, ProductFormDto>();
}
我将它作为ServiceLayerMappings.cs
放在Tasks(服务)层中如果是这样,我会在哪里放置我见过的额外映射代码,大多数示例中都放在Controller中?
我首先如何/何时/何时调用此ServiceLayerMappings?
ServiceLayerMappings是否在我的任务层根目录下的单个文件中包含了所有ViewModel的所有映射?
任何形式的指导都会非常感激,因为我现在正在摸不着头脑!
答案 0 :(得分:0)
啊我觉得我有它。在MyStore示例中有CudTasks文件,以下方法是其中的一部分:
/// <summary>
/// Udpates an entitry from the DB with new information from the form. This example
/// manually copies the data but you could use a more sophisticated mechanism, like AutoMapper
/// </summary>
protected override void TransferFormValuesTo(ProductCategory toUpdate, ProductCategory fromForm) {
toUpdate.Name = fromForm.Name;
toUpdate.Parent = fromForm.Parent;
}