私は最初のDapper Dalプロジェクトから始めました。
私は3つのプロジェクトを持っています: - Webサイト(MVC) - DataLayer(Dapper) - モデル(Poco Classes)
モデルにバリデーションを追加したいのですが、データレイヤーにクリーンなポコクラスを使いたいと思っています。私のdatalayerはdapperを使ってpocoクラスをデータベースにマッピングします。
私はインターネットを検索しましたが、私は良い答えを見つけることができません。
私の質問は、どこに私のバリデーションを追加するのですか? - 私のポコのクラスを拡張するクラスを持つseppetatedプロジェクトで、または別の方法がありますか?
DALクラスとMVCクラスを明確に分離したい場合は、MVCプロジェクトのViewModelsを使用するなどして、これを行うことができます。 ViewModelには、ブラウザに表示されているものに最も適したプロパティと検証があります。あなたのコントローラーは、DALクラスとViewModelの間でデータをマッピングする責任があります。 Automapperはそのための非常に良いツールです。
それは次のように少し見えるでしょう:
DAL:
public class MyDapperClass
{
public int Id { get; set; }
public string SomeProperty { get; set; }
}
ViewModel:
public class MyViewModelClass
{
public int Id { get; set; }
[StringLength(50),Required]
public string SomeProperty { get; set; }
}
コントローラ:
// using AutoMapper;
public class MyController : Controller
{
public MyController()
{
// Set up AutoMapper to be able to map your class
Mapper.CreateMap<MyDapperClass, MyViewModelClass>();
}
public ActionResult MyAction()
{
var dalObject = DAL.GetObject();
var viewModel = Mapper.Map<MyViewModelClass>(dalObject);
return View(viewModel);
}
}