Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从控制器访问模型,这是一种好方法吗?_C#_Asp.net Mvc_Asp.net Mvc 3_Linq To Sql - Fatal编程技术网

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

C# 从控制器访问模型,这是一种好方法吗?,c#,asp.net-mvc,asp.net-mvc-3,linq-to-sql,C#,Asp.net Mvc,Asp.net Mvc 3,Linq To Sql,我遇到了一些博客和论坛,发现了这种使用LINQ到SQL与控制器中的模型类进行交互的方法 这是一种正确的访问方式吗 using System.Linq; using System.Web.Mvc; using MvcApplication1.Models; namespace MvcApplication1.Controllers { [HandleError] public class HomeController : Controller

我遇到了一些博客和论坛,发现了这种使用LINQ到SQL与控制器中的模型类进行交互的方法

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

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);
              }
         }
    }

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

对于小时间项目和教程,这很好,是推荐的方法

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

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

请记住,使用此选项时,您不能再在视图中延迟加载属性,因为对象发送到视图时,数据上下文已关闭。因此,像
movie.Director.Name
这样的查询将不起作用,除非您急切地加载它。

这不一定不好,但您可以通过应用众所周知的模式和最佳实践(即分层、存储库等)对其进行改进

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