У меня есть API .NET 8 с использованием хоткоколата (V12), EFCORE (V8) и Snowflake (V2). Я пытаюсь обновить свои версии снежинки и хоткоколата до хоткоколата 15 и Snowflake 4. Похоже, что из -за изменений в снежинок V4 в подключение, объединяющая природу, мои соединения больше не отсоединяются. Это заставляет приложение повесить даже после завершения всех запросов. Я предполагаю, что утечка подключения заключается в том, что контекст DB вводится в код на уровне запроса хоткоколата, и в резиновых резоляторах нет ничего, что утилизирует или закрывает соединение. Однако я понятия не имею, как заставить это работать. [UseProjection]
[UseFiltering]
[UseSorting]
public IQueryable
GetPerson(
snowflake_stageContext db,
[GraphQLNonNullType] string name
)
{
return db.People.Where(p => p.Name == name);
}
< /code>
Различные конфигурации запуска, которые я пробовал (как индивидуально, так и в комбинациях): < /p>
services.AddDbContext(
contextLifetime: ServiceLifetime.Scoped,
optionsLifetime: ServiceLifetime.Scoped
);
< /code>
services.AddDbContextFactory(options => {}, ServiceLifetime.Scoped);
< /code>
services.AddGraphQLServer()
.RegisterDbContextFactory()
< /code>
I have also tried just injecting the db factory manually, creating an instance of the db context and then disposing of it in the query but of-course that causes the reference to not work in the later resolvers. I also do not want to materialize the data at the query level as that would be before the projection/filter is applied and would cause over fetching.
The only thing that I have found that does work is to manually call
SnowflakeDbConnectionPool.ClearAllPools();
< /code>
But this is generally considered a bad process and I'm not sure what it will do with requests that are on going when it is called.
Подробнее здесь: https://stackoverflow.com/questions/797 ... tchocolate