C# 在.NETEF核心问题中查询字符串sql语句
我是新使用.Net核心EF的人 我的数据库表中有一句话,我必须执行如下操作(使用ado.net):C# 在.NETEF核心问题中查询字符串sql语句,c#,.net,entity-framework,core,C#,.net,Entity Framework,Core,我是新使用.Net核心EF的人 我的数据库表中有一句话,我必须执行如下操作(使用ado.net): 使用(var命令=context.Database.GetDbConnection().CreateCommand()) { command.CommandText=“”; context.Database.OpenConnection(); 使用(var result=command.ExecuteReader()) { .... } } 我在中找到此文档: 我的问题很简单:执行查询后是否需要
使用(var命令=context.Database.GetDbConnection().CreateCommand())
{
command.CommandText=“”;
context.Database.OpenConnection();
使用(var result=command.ExecuteReader())
{
....
}
}
我在中找到此文档:
我的问题很简单:执行查询后是否需要关闭连接?我想我应该这样做,但我不知道是否有必要使用EF的相同行为并自动关闭。在使用后处理
SqlCommand
就足够了,剩下的留给Entity framework或ADO.NET处理。SQL连接使用,这意味着连接保持打开状态,并且可以被后续查询重用
更新:
SQL连接位于DbContext
中,GetDbConnection()
表示
获取此DbContext
的基础ADO.NETDbConnection
这意味着,
DbContext
有一个DB连接,该连接由它管理(包括连接弹性等功能)。当DbContext被释放时,SQL连接也被释放。只需添加Martin answer,
EFCore
使用连接池
您可以通过多种方式检查连接的实际数量
Perfmon
计数器,请参阅也许垃圾收集会正确处理它?不管怎样,我把它处理掉了。THSIN数据库连接字符串,您可以考虑将MimoPosithMax和Max POSIZE设置为一些合适的VAULLS,以在调用之间保持一致的性能。
using (var command = context.Database.GetDbConnection().CreateCommand())
{
command.CommandText = "<<my sql sentence>>";
context.Database.OpenConnection();
using (var result = command.ExecuteReader())
{
....
}
}