我遇到了一些博客和论坛,并发现这种使用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);
}
}
}
答案 0 :(得分:1)
对于小型项目和教程,这很好并且是推荐的方法。
小提示:您可以将MovieDataContext
包装在using语句中,该语句负责关闭连接并释放资源:
using (var dataContext = new MovieDataContext())
{
// query...
}
使用此功能时请记住,您不能再在视图中延迟加载属性,因为在将对象发送到视图时关闭数据上下文。因此,movie.Director.Name
之类的查询将无效,除非您急切加载它。
答案 1 :(得分:0)
是的,这应该是使用MVC模式的标准方式。
答案 2 :(得分:0)
这不一定是坏事,但你可以通过应用众所周知的模式和最佳实践来改进它,即分层,存储库等。
理想情况下,最好保持控制器尽可能薄,并委托所有数据库操作或较低级别所需的任何逻辑,例如服务层。