多个 DbCon 对象

Multiple DbCon Object

namespace MyMain.Controllers
{
    public class Home
    {
       **//Open First Db Connection Here**
        public MyDbConEntities db = new MyDbConEntities();

        public ActionResult Index()
        {
            var user = db.User.FirstOrDefault();

            **//Open second Db Connection Here**

            using (var myTask = new MyTask1())
            {
                myTask.Execute(user.Id);
            }
        }
    }
}

namespace MyMain.Task
{
    private MyDbConEntities db = new MyDbConEntities();
    public class MyTask1 : IDisposible
    {
        private int Id;
        public MyTask1(int id)
        {
            db = new MyDbConEntities();
            Id = id;
        }

        public void Execute()
        {
            **//Open thidr Db Connection Here**
            using (var mySubTask = new MySubTask1())
            {
                mySubTask.Execute(Id);
            }

            db.UserDetails.FirsOrDefault(x => x.UserId = Id)
        }

        public Dispose()
        {
            db.Dispose();
        }

    }
}

嗨,朋友们,我的问题是同时打开多个 DbCon。

在上面的代码中,我试图表达我的想法。我的目的是,在每个单独的任务 Class 中打开 DbCon。但有时,我从另一个任务中调用一个任务 class.

所以有时候,可以短时间同时打开几个dbCon。我不想发送 MyMain/Home Class db 对象作为任务 classess 的实例。我以为错误处理案例。例如,当 MySubTask1 发生错误时 (如果我使用 db 对象作为实例,dbCon 可能会关闭,整个系统可能会失败。

所以我尝试实现这个...你觉得我的想法怎么样?

你能给我一个线索吗?对于大型数据库和用户,此方法在服务器上可能会出现问题。

如何通过此方法使用 UnitOfWork?

在基于 EF 的设计 N-Tir 应用程序中不常见的是,在每个 class 和我们想要使用它的方法中创建 DbContext 的实例。

这样, 在交易期间执行不同任务的能力被破坏。

为了解决这个问题使用 Context Per Request Pattern 或 UnitOfWork, 通过这样做在不同的层中共享 Instans Of Context。

模型工作单元的重要性并在通话中分享

A) 更好的性能

B) 并发问题

C) 交易的正确使用