У меня есть singleton context
blockquote>Это ваша проблема.
DbContext
не является потокобезопасным и предназначен для выполнения одного запроса за раз. Поскольку вы делитесь своимDbContext
, вы, вероятно, пытаетесь одновременно вызвать другой запрос, который не является «законным» в терминахDbContext
.Вы даже можете увидеть его в замечания
ToListAsync
:Несколько активных операций в одном экземпляре контекста не поддерживаются. Используйте 'await', чтобы убедиться, что какие-либо асинхронные операции были выполнены до вызова другого метода в этом контексте.
blockquote>То, что вы должны делать, не повторяет использование вашего контекста с глобальный синглтон, создавая новый контекст каждый раз, когда вы хотите запросить свою базу данных.
Изменить:
Вместо того, чтобы получить один
Context
по вашему заводскому методу, просто выделите новый для каждого запроса:using (var context = new ConfigurationContext(connectionString)) { var query = await (from feature in context.Features join featureFlag in context.FeatureFlags on feature.FeatureId equals featureFlag.FeatureId into allFeatures from featureFlagValue in allFeatures.DefaultIfEmpty() where featureFlagValue.TenantId == tenantId select new BusinessEntities.FeatureFlag { Code = feature.Code, Type = feature.Type, FeatureFlagId = featureFlagValue == null ? 0 : featureFlagValue.FeatureFlagId }).ToListAsync(); }