我是 ASP.NET MVC 的新手,来自 PHP MVC 背景。这是一种尴尬的过渡(请参阅我的问题历史,呵呵。)
在.Net 世界中,我在理论上非常喜欢的一件事是模型与持久性无关的想法。但是在这种情况下,将更改保存到模型的正确方法是什么?在 PHP 中,我只是$model->save();
在进行一些转换后调用。在 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 领域,我的控制器基本上只能访问模型和视图。