MVC,DbContext和多线程

时间:2012-12-13 20:49:13

标签: asp.net-mvc entity-framework thread-safety dbcontext

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

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

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

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

谢谢, EDI。

2 个答案:

答案 0 :(得分:3)

DbContext旨在用每个请求进行实例化。它实现了IDisposable,实例化是一种低成本的操作。内部处理到数据库的连接池。

更多信息:

Entity Framework and Connection Pooling

答案 1 :(得分:2)

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