私はASP.NETMVCを初めて使用し、PHPMVCのバックグラウンドを持っています。それは一種の厄介な移行でした(私の質問の履歴を参照してください)。
理論上、.Netの世界で非常に気に入っているのは、モデルが永続性にとらわれないという考えです。しかし、この場合、モデルへの変更を保存する適切な方法は何ですか?$model->save();
PHPでは、変換を行った後に呼び出すだけです。C#では、その方法がわかりません。
これは適切ですか?
public class AwesomesauceController
{
//inject!
public AwesomeSauceController(IDataAccess da)
{
DataAccess = da;
}
private readonly IDataAccess DataAccess;
[HttpGet]
public ActionResult Edit(int Id)
{
// PHP equiv: AwesomeSauceModel::find($id); Controller is unaware of DAL
return View(DataAccess.AwesomeSauces.Where( sc => sc.Id == Id).FirstOrDefault());
}
[HttpPost]
public ActionResult Edit(AwesomeSauce sc)
{
//persistence-aware version: model is aware of DAL, but controller is not
if($sc->valid()
$sc->save();
redirect();
}
else { return view(); }
// compare to persistence-agnostic version, controller is aware of DAL, but model is not
if(ModelState.IsValid)
{
da.Persist(sc);
return Redirect();
}
else
{
return View(sc);
}
}
}
これについて私が間違っていると思う唯一のことは、通常、コントローラーがこの方法でデータアクセス層に直接アクセスすることを望まないということです。以前は、PHPランドでは、基本的に、コントローラーはモデルとビューにのみアクセスしていました。