Как проверить в Java, если Set содержит объект с некоторым значением строки?

У меня есть 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();
}
19
задан GingerHead 16 October 2012 в 07:54
поделиться