C# 从控制器访问模型,这是一种好方法吗?
我遇到了一些博客和论坛,发现了这种使用LINQ到SQL与控制器中的模型类进行交互的方法 这是一种正确的访问方式吗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
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
这样的查询将不起作用,除非您急切地加载它。这不一定不好,但您可以通过应用众所周知的模式和最佳实践(即分层、存储库等)对其进行改进
理想情况下,最好保持控制器尽可能精简,并将所有数据库操作或所需的任何逻辑委托给较低级别,例如服务层