linq到sql-asp-mvc-在哪里访问数据上下文
本文关键字:数据 上下文 访问 在哪里 sql-asp-mvc- linq | 更新日期: 2023-09-27 18:28:51
大家好!
目前正在进行一个项目,在aspmvc 2中使用Linq到Sql来处理数据库。
我在asp-mvc中看到了许多关于Linq-to-sql的文档,我的问题是,我到底在哪里访问我的数据上下文?哪个地方的表现更好
例如,我有MyDBDataContext
类
我可以在我的控制器中定义
public class ImaginaryController : Controller
{
MyDBDataContext context = new MyDBDataContext ();
public ActionResult Index()
{
var list = // some code to read context
return View(list);
}
}
.......
或者,在行动方法
public class ImaginaryController : Controller
{
public ActionResult Index()
{
MyDBDataContext context = new MyDBDataContext ();
var list = /* some code to read context */;
return View(list);
}
public ActionResult Create()
{
//but create need reference
MyDBDataContext context = new MyDBDataContext ();
var list = /* some code to read context */;
return View(list);
}
}
另一种选择是创建一个类来访问数据
public class AccesToBD{
//maybe
private MyDBDataContext current;
public static MyDBDataContext GetContext(){
return current;
}
}
或者更复杂的东西,比如在C中实现Singleton模式#
什么是最好的解决方案?为什么?。谢谢你的回答。
理想情况下,您希望使用依赖项注入。在它的基本形式中,您可以将数据库上下文注入控制器构造函数。这样你就不必在所有的控制器/操作等中创建新的上下文实例
这样做的一个很好的例子可以在这里找到:
ASP.NET MVC 4依赖项注入-实践实验室
它基本上有助于将对数据逻辑的任何直接访问与控制器/操作分离开来-如果您需要更改数据存储方法等,这一点非常重要。