在我的解决方案中,我有两个项目。
项目 1(核心)使用 Dapper 将 SQL 映射到 DTO
项目 2 (WebUI - ASP.NET MVC 4) 这里我为每个视图使用一个 ViewModel。
控制器示例
[HttpGet]
public ActionResult Edit(int id)
{
// Get my ProductDto in Core
var product = Using<ProductService>().Single(id);
var vm = new ProductFormModel(product);
return View(vm);
}
ViewModel 示例
public class ProductFormModel : BaseViewModel, ICreateProductCommand
{
public int ProductId { get; set; }
public int ProductGroupId { get; set; }
public string ArtNo { get; set; }
public bool IsDefault { get; set; }
public string Description { get; set; }
public string Specification { get; set; }
public string Unit { get; set; }
public string Account { get; set; }
public decimal NetPrice { get; set; }
public ProductFormModel(int productGroupId)
{
this.ProductGroupId = productGroupId;
}
public ProductFormModel(ProductDto dto)
{
this.ProductId = dto.ProductId;
this.ProductGroupId = dto.ProductGroupId;
this.ArtNo = dto.ArtNo;
this.IsDefault = dto.IsDefault;
this.Description = dto.Description;
this.Specification = dto.Specification;
this.Unit = dto.Unit;
this.Account = dto.Account;
this.NetPrice = dto.NetPrice;
}
public ProductFormModel()
{
}
}
说明: 我将使用项目(核心)中的服务类在我的控制器中获取我的 DTO。然后我创建我的 ViewModel 并将 DTO 传递给 ViewModel 中的构造函数。我也可以使用这个视图来添加一个新产品,因为我的 ViewModel 可以采用一个空的构造函数。
有没有人有这方面的经验。我想知道我这种方式将来随着项目变大会不会有问题?
我知道这与 Dapper 无关。但我仍然想要一个解释我的解决方案的好方法。