【发布时间】:2016-11-03 23:38:57
【问题描述】:
我编写了简单的 ASP.NET Core 应用程序,其中 Controller 注入 MyService(配置为 Scoped),然后又注入 MyDbContext。
在我的控制器方法中,我有 2 个数据库查询,我的调试输出如下所示:
Executing action method...
Opening connection to database 'shell' on server 'tcp://127.0.0.1:5432'.
...
Closing connection to database 'shell' on server 'tcp://127.0.0.1:5432'.
Opening connection to database 'shell' on server 'tcp://127.0.0.1:5432'.
...
Closing connection to database 'shell' on server 'tcp://127.0.0.1:5432'.
Request finished in...
问题是:为每个请求打开一个新连接是否正确,甚至更多 - 为每个 sql 命令打开一个新连接?它不能建立一次与数据库的连接并重用它。性能不是更好吗?
PS:我将 PostgreSQL 与 npgsql 提供程序一起使用
【问题讨论】:
-
您每次想要做某事时都实例化一个新的数据库上下文,并确保它被最小化到该操作的范围内。连接池被抽象出来并由其他地方的 EF 管理
标签: c# postgresql asp.net-core entity-framework-core npgsql