【问题标题】:Proper way to use DBCONTEXT Class in MVC在 MVC 中使用 DBCONTEXT 类的正确方法
【发布时间】:2013-09-05 11:24:50
【问题描述】:

在 MVC 中,我们创建类似的 Dbcontext 模型

 public class Model1 : DbContext
    {
        public Model1()
            : base("DefaultConnection")
        {}
        public DbSet<SomeObj> SomeObjSet { get; set; }
    }

//another model

 public class Model2 : DbContext
        {
            public Model2()
                : base("DefaultConnection")
            {}
            public DbSet<SomeObj2> SomeObjSet { get; set; }
        }

然后我们使用类似的控制器

public class SomeController : Controller
    {
        private Model1 db1 = new Model1();
        private Model2 db2 = new Model2();

        public ActionResult Action1()
        {
            //do sth with Model1 and return
            return View(db1.SomeObjSet.ToList());// 
        }

         public ActionResult Action2()
        {
            //do sth with Model2 and return result
            return View(db2.SomeObjSet.ToList());// 
        }

但我的问题是,我们以这种方式创建了多个DBConnections。将这两个模型组合成一个模型并为每个控制器设置一个专用模型是否更好?

【问题讨论】:

    标签: c# asp.net-mvc asp.net-mvc-4


    【解决方案1】:

    但我的问题是,我们不是这样创建多个 DBConnections 的。

    不,不用担心。实体框架(或更具体地说是它所依赖的 ADO.NET)处理连接池中的实际数据库连接。所以不要将 DbContext 与实际的 DbConnection 混淆。这是两个完全不同的东西。

    【讨论】:

      【解决方案2】:

      实际上,这些类型的场景都有标准方法..
      Unit Of Work & Generic Repository with Entity Framework 5

      另外,请访问此帖子:Understanding and Implementing Repository and Unit of Work Pattern in ASP.NET MVC Application

      我正在从第二个链接复制下面的一些文字。

      现在想象一下我们有多个表的场景 数据库。然后我们需要创建多个存储库以便映射 域模型到数据模型。现在有多个存储库 课程提出问题。

      问题在于 ObjectContext 对象。如果我们创建 多个存储库,它们是否应该包含它们的 ObjectContext 分别地?我们知道使用多个 ObjectContext 实例 同时对象可能是一个问题,所以我们真的应该允许每个 存储库来包含自己的实例?

      解决这个问题。为什么要让每个 Repository 类实例都有 它自己的 ObjectContext 实例。为什么不创建实例 ObjectContext 在某个中心位置,然后将此实例传递给 每当它们被实例化时,存储库类。现在这个 新类将被称为 UnitOfWork 并且这个类将是 负责创建 ObjectContext 实例并移交 所有存储库实例到控制器。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-02-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-30
        • 2021-12-20
        • 2015-07-27
        • 1970-01-01
        相关资源
        最近更新 更多