1

我正在使用 MVC + Entity Framework 5,目前正在研究Unit of Work 模式。在控制器类中,我看到以下代码:

private UnitOfWork unitOfWork = new UnitOfWork();

这是否意味着为每个控制器创建类,从而为每个实例UnitOfWork创建一个数据库连接?UnitOfWork还是所有DbContext实例(在本文SchoolContext中创建的实例UnitOfWork)共享相同的连接?

UnitOfWork我的第二个问题:当只创建一个存储在 中的实例时,它会提高应用程序的性能HttpContext,还是有更好的方法?

4

1 回答 1

2

首先,让我提醒你。我知道你没有这样做,但我想确保你明白你永远不应该创建单个数据上下文并使其成为静态或单例。原因是应用程序的所有实例(即多个用户)之间共享静态数据,并且数据上下文不是多线程或多用户安全的。

发出警告后,让我们继续前进。

一般来说,您不必担心这一点。原因是即使您创建了多个 UnitOfWorks,一次也只有一个控制器处于活动状态(每个 Web 请求)。Entity Framework 有一个连接池,可以重用连接并优化它们的使用。(实际上,这是 Ado.net 的一部分,但仍然适用)

于 2012-10-09T16:07:13.640 回答