5

关于这些主题分别有很多问题,每个人都有自己的看法。也许有人可以就以下问题给我一个很好的答案。

我有一个使用 EntityFramework 访问数据库的 Asp.NET MVC Web 服务。每次用户向 Web 服务发出请求时,都会创建一个控制器,并创建一个控制器实例。每个请求都很快。它只是从数据库中获取一些数据,对其进行更改然后保存。

问题当然是如何维护 DbContext(因为它不是线程安全的)?在控制器的 ctor 上,我创建了一个 DbContext 实例。在控制器的 Dispose() 上,我处理 DbContext。

我在一些帖子中看到,为每个请求创建一个实例并不是一个好习惯。不是吗?

谢谢,艾迪。

4

2 回答 2

4

DbContext 旨在随每个请求实例化。它实现了 IDisposable 并且实例化是一种低成本的操作。与数据库的连接池在内部处理。

更多信息:

实体框架和连接池

于 2012-12-13T20:55:47.867 回答
2

DbContext 是一个非常轻量级的对象,它被设计为为每个操作(=请求)创建然后释放。在幕后,ado.net 负责重用连接池中的数据库连接。

于 2012-12-13T20:55:25.430 回答