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

Connection Pool EF Core

Boa noite, sou inexperiente em .net e gostaria de entender mais sobre o connection pool do entity framework. Sempre que uma dao efetua uma query no banco é necessário instanciar um novo dbcontext. Ao instanciar um novo db context significa que estou abrindo uma nova conexão com o banco? Como faço para limitar ou configurar o max pool size no entity framework core?

2 respostas

Oi Paula, tudo bem?

As conexões vão sendo abertas e fechadas à media que os comandos emitidos pelos objetos DbContexts terminam de ser executados.

Para reutilizar objetos DbContext: em vez de services...AddDbContext, você deve usar: services.AddDbContextPool.... Dessa forma, o Entity Framework poderá evitar a criação de novas instâncias de `DbContext´.

Quanto à limitação do pool de conexões: isso pode ser feito na própria string de conexão, por exemplo, o seguinte código define o pool com tamanho mínimo de 10 instâncias:

Data Source=localhost;Initial Catalog=MeuBanco;Integrated Security=True;Min Pool Size=10;
solução!

Oi Marcelo, obrigado pela resposta.

Achei uma excelente sugestão utilizar pool para gerenciar as instâncias do dbContext. Vou ler mais sobre o assunto.

Só para complementar a sua resposta em relação ao limite de conexões do pool, na documentação da microsoft, eles mencionam vários atributos que podem ser usados na string de conexão. E realmente esta limitação deve ser incluída ali. Por default o tamanho máximo do pool é 100. Caso queira diminuir ou aumentar este número, é necessário incluir o atributo "Max Pool Size" na string de conexão. Ex: Max Pool Size=50.

Abaixo, possíveis atributos que podem ser utilizados na string de conexão.

https://docs.microsoft.com/en-us/dotnet/api/system.data.sqlclient.sqlconnection.connectionstring?redirectedfrom=MSDN&view=netframework-4.7.2#System_Data_SqlClient_SqlConnection_ConnectionString