asp.net mvc のベスト プラクティスを使用して DDD の原則を実装する最善の方法について、いくつか質問があります。実際、(ビューモデルまたはモデルで) 検証をどのように行っていますか?
私はこの DomainModel と ViewModel を持っています:
public class Product {
public int Id { get; protected set; }
public string Name { get; set; }
public decimal Price { get; set; }
public int Stock { get; set; }
public Category Category { get; set; }
public Supplier Supplier { get; set; }
public string Code { get; set; } // it has to be unique
}
public class ProductViewModel {
public int Id { get; set; }
/* other simple properties */
public int IdCategory { get; set; }
public int IdSupplier { get; set; }
public string Code { get; set; }
}
Ok。モデルは NHibernate でマッピングされ、正常に動作します。ViewModel または DomainModel の検証を作成する方がよいかどうかを知りたいですか? つまり、asp.net mvc のアクションで ViewModel を受け取ったら検証しますが、ViewModel にビジネス ルールを追加すると、間違っていないでしょうか。これらのビジネス検証を自分のドメインに追加した方がよいとわかっているので、これを尋ねますが、永続化する前に投稿で 2 つの検証を行う必要がありますか? asp.net mvc で私のアクションを見てください:
[Post]
public ActionResult Update(ProductViewModel viewModel) {
// what kind of validations should I do here?
if (invalid) {
return View(viewModel);
}
// how can I return the errors to my View?
// Is here any best pratice to transform from ViewModel to Domain instance?
Product product = ???
_repository.Save(product);
return RedirectToAction("Index");
}
誰かがコードで例を示すことができますか?