问题:
给EFCore添加日志后发现
每执行一次SQL, 它都会openning connection->opened->executing->executed->closing connection->closed
而有时候我希望能够保持长连接, 不要关闭
求教如何设置?
-----
发现博友并没有看清楚我的题目...
1, EFCore
2, 保持Connection
我是通过日志来观察的.
那位让我看官网文档的朋友我真的刷过官网文档好几遍了不然也不会用日志不是吗?
------
把问题换个方式再表达下:
using(var context = new DbContext())
{
//query1
//query2
//query3
}
查看日志后发现:
[]opening connection to server xxx.xxx.xxx.xx
[]opened connection to server xxx.xxx.xxx.xx
[]executing query1
[]executed query1
[]closing ...
[]closed
[]opening connection to server xxx.xxx.xxx.xx
[]opened connection to server xxx.xxx.xxx.xx
[]executing query2
[]executed query2
[]closing ...
[]closed
[]opening connection to server xxx.xxx.xxx.xx
[]opened connection to server xxx.xxx.xxx.xx
[]executing query3
[]executed query3
[]closing ...
[]closed
然而我想要的是一次open 然后执行query1,2,3之后再close
至于使用contextpool, 也不是这回事, 我这例子里就只需要用到一个context所以不需要pool
不知道有没有方法可以设置, 非常感谢
回答1:
可以把数据库连接注入到上下文:
回答2:
来,首先学习一下EF CORE.
https://docs.microsoft.com/en-us/ef/core/
然后学习一下 ASP.NET CORE
https://docs.microsoft.com/en-us/ef/core/get-started/aspnetcore/
最后,给我一个理由,谁告诉你保持长连接是个好习惯。
希望你能在上面的文章中找到答案,而不要听别人胡说八道。
回答3:
用的什么框架,如果是efcore,修改addcontext<>为addcontextpoll<>
回答4:
试试这个方法,在 Startup 的 ConfigureServices 方法中创建 SqlConnection 然后注入给 DbContext
var conn = new SqlConnection(Configuration.GetConnectionString("conn"));
services.AddDbContext<MyDbContext>(options =>
options.UseSqlServer(conn)
);