使用上下文或创建方法在控制器中获取数据?

时间:2012-12-19 20:11:29

标签: c# asp.net-mvc entity-framework

以下哪项是正确的,或者至少是最好的:

创建一个方法来检索控制器中的数据:

public ActionResult Index()
{
    var list = _context.MyClass.Take(10);
    return View(list);
}

或直接使用上下文:

public ActionResult Index()
{
    var list = MyClass.MethodWrapperToGet(10);
    return View(list);
}

我对第一个问题的关注是数据库太暴露;使开发人员容易滥用。

2 个答案:

答案 0 :(得分:0)

这实际上取决于项目的大小。对于小型或快速原型,我会选择控制器直接访问DbContext的选项。

public ActionResult Index()
{
    var list = _context.MyClass.Take(10);
    return View(list);
}

我个人更喜欢分开音乐会。换句话说,我会创建一个服务类,将控制器完全交给它所需的数据。请记住,Controller不应该知道如何执行任务,而是 之后需要执行的内容

当然,这并不意味着您必须实现存储库模式。如果您愿意,您的服务类可以直接访问DbContext

答案 1 :(得分:0)

理想情况下,您可以使用公开_context的变体,您可以通过依赖注入传递该上下文,以便对控制器进行单元测试。

静态调用很难测试,至少在.Net