以下哪项是正确的,或者至少是最好的:
创建一个方法来检索控制器中的数据:
public ActionResult Index()
{
var list = _context.MyClass.Take(10);
return View(list);
}
或直接使用上下文:
public ActionResult Index()
{
var list = MyClass.MethodWrapperToGet(10);
return View(list);
}
我对第一个问题的关注是数据库太暴露;使开发人员容易滥用。
答案 0 :(得分:0)
这实际上取决于项目的大小。对于小型或快速原型,我会选择控制器直接访问DbContext
的选项。
public ActionResult Index()
{
var list = _context.MyClass.Take(10);
return View(list);
}
我个人更喜欢分开音乐会。换句话说,我会创建一个服务类,将控制器完全交给它所需的数据。请记住,Controller不应该知道如何执行任务,而是 之后需要执行的内容。
当然,这并不意味着您必须实现存储库模式。如果您愿意,您的服务类可以直接访问DbContext
。
答案 1 :(得分:0)
理想情况下,您可以使用公开_context的变体,您可以通过依赖注入传递该上下文,以便对控制器进行单元测试。
静态调用很难测试,至少在.Net
中