0

祝大家有美好的一天!

目前在 asp-mvc 2 中使用 Linq to 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# 中实现单例模式

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

4

1 回答 1

1

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

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

ASP.NET MVC 4 依赖注入 - 动手实验室

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

于 2013-08-23T17:08:32.360 回答