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模式#

什么是最好的解决方案?为什么?。谢谢你的回答。

linq到sql-asp-mvc-在哪里访问数据上下文

理想情况下,您希望使用依赖项注入。在它的基本形式中,您可以将数据库上下文注入控制器构造函数。这样你就不必在所有的控制器/操作等中创建新的上下文实例

这样做的一个很好的例子可以在这里找到:

ASP.NET MVC 4依赖项注入-实践实验室

它基本上有助于将对数据逻辑的任何直接访问与控制器/操作分离开来-如果您需要更改数据存储方法等,这一点非常重要。