私のソリューションには、2 つのプロジェクトがあります。
プロジェクト 1 (コア) Dapper を使用して SQL を DTO にマッピングする
プロジェクト 2 (WebUI - ASP.NET MVC 4) ここでは、View ごとに 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 とは何の関係もないことを私は知っています。しかし、私はまだ私の解決策を説明する良い方法が欲しい.