从控制器访问模型,这是一个好方法吗?

时间:2014-01-15 08:01:03

标签: c# asp.net-mvc asp.net-mvc-3 linq-to-sql

我遇到了一些博客和论坛,并发现这种使用LINQ to SQL从控制器与MODEL类交互的方式

这是一种正确的访问方式吗?

using System.Linq;
using System.Web.Mvc;

using MvcApplication1.Models;

    namespace MvcApplication1.Controllers
    {
         [HandleError]
         public class HomeController : Controller
         {
              public ActionResult Index()
              {
                   var dataContext = new MovieDataContext();
                   var movies = from m in dataContext.Movies
                        select m;
                   return View(movies);
              }
         }
    }

3 个答案:

答案 0 :(得分:1)

对于小型项目和教程,这很好并且是推荐的方法。

小提示:您可以将MovieDataContext包装在using语句中,该语句负责关闭连接并释放资源:

using (var dataContext = new MovieDataContext())
{
    // query...
}

使用此功能时请记住,您不能再在视图中延迟加载属性,因为在将对象发送到视图时关闭数据上下文。因此,movie.Director.Name之类的查询将无效,除非您急切加载它。

答案 1 :(得分:0)

是的,这应该是使用MVC模式的标准方式。

答案 2 :(得分:0)

这不一定是坏事,但你可以通过应用众所周知的模式和最佳实践来改进它,即分层,存储库等。

理想情况下,最好保持控制器尽可能薄,并委托所有数据库操作或较低级别所需的任何逻辑,例如服务层。