Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Como o DataService trabalha com a conexão?

Fiquei na duvida como funciona a conexão do DataService com Entity Framework Core com a injeção de dependência. Pois em momento nenhum vejo o uso de Abrir e Fecha conexão, que normalmente é feita pelo "using". Também queria saber quantas conexões a aplicação desenvolvida no curso consegue suportar com as tecnologias implementadas.

3 respostas
solução!

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

Muito Obrigado

Pessoal achei este texto que me esclareceu ainda mais como funciona, quem ainda tiver alguma duvida pode conferir o link.

Fechar conexões de banco de dados

Para liberar os recursos que contém uma conexão de banco de dados, a instância de contexto deve ser descartada assim que possível quando você tiver terminado com ele. O interno do ASP.NET Core injeção de dependência cuida dessa tarefa para você. Em Startup.cs, você chamar o o método de extensão AddDbContext para provisionar o DbContext classe no contêiner de injeção de dependência do ASP.NET. Que método define o tempo de vida do serviço Scoped por padrão. Scoped significa o tempo de vida do objeto de contexto coincide com o tempo de vida de solicitação da web, e o Dispose método será chamado automaticamente no final da solicitação da web.

link: https://docs.microsoft.com/pt-br/aspnet/core/data/ef-mvc/crud