关于这些主题有很多问题,每个人都有自己的看法。 也许有人可以就下面的问题给我一个很好的答案。
我有一个Asp.NET MVC Web服务,它使用EntityFramework来访问数据库。 每当用户向Web服务发出请求时,就会创建一个控制器并创建一个实例。 每个请求都很快。它只是从DB获取一些数据,更改它然后保存它。
当然,问题是如何维护DbContext(因为它不是线程安全的)? 在控制器的ctor上,我创建了一个DbContext实例。 在控制器的Dispose()上,我将处理DbContext。
我在一些帖子中看到,根据每个请求创建一个实例并不是一个好习惯。 不是吗?
谢谢, EDI。
答案 0 :(得分:3)
DbContext旨在用每个请求进行实例化。它实现了IDisposable,实例化是一种低成本的操作。内部处理到数据库的连接池。
更多信息:
答案 1 :(得分:2)
DbContext是一个非常轻的对象,它被设计为为每个操作(=请求)创建然后处理。在引擎盖下,ado.net负责重用连接池中的数据库连接。