Olá, Flávio
Quando o DBContext
é passado para o construtor do DataService
, esse contexto já tem uma conexão aberta.
Se você precisar manipular diretamente a conexão do EF Core a partir do contexto, precisa acessar o objeto DBContext
assim:
_context.Database.GetDbConnection()
e:
_context.Database.OpenConnection()
por exemplo:
https://docs.microsoft.com/en-us/aspnet/core/data/ef-mvc/advanced
public async Task<ActionResult> About()
{
List<EnrollmentDateGroup> groups = new List<EnrollmentDateGroup>();
var conn = _context.Database.GetDbConnection();
try
{
await conn.OpenAsync();
using (var command = conn.CreateCommand())
{
string query = "SELECT EnrollmentDate, COUNT(*) AS StudentCount "
+ "FROM Person "
+ "WHERE Discriminator = 'Student' "
+ "GROUP BY EnrollmentDate";
command.CommandText = query;
DbDataReader reader = await command.ExecuteReaderAsync();
if (reader.HasRows)
{
while (await reader.ReadAsync())
{
var row = new EnrollmentDateGroup { EnrollmentDate = reader.GetDateTime(0), StudentCount = reader.GetInt32(1) };
groups.Add(row);
}
}
reader.Dispose();
}
}
finally
{
conn.Close();
}
return View(groups);
}
Quanto ao número de conexões, o SQL Server 2012 suporta até 32767 conexões:
https://dba.stackexchange.com/a/125284