Отключить запрос проверки EF Core Migration - PullRequest
0 голосов
/ 15 ноября 2018

Я запускаю веб-приложение с ядром asp.net 2.1.4 с ядром платформы сущностей 2.1.4, используя сначала код. Миграция и начальное число выполняются при запуске приложения.

Я заметил пару запросов EF, проверяющих историю миграции при каждом вызове:

Executed DbCommand (47ms) [Parameters=[], CommandType='Text', CommandTimeout='30'] SELECT OBJECT_ID(N'[__EFMigrationsHistory]');

Executed DbCommand (2ms) [Parameters=[], CommandType='Text', CommandTimeout='30'] SELECT OBJECT_ID(N'[__EFMigrationsHistory]');

Executed DbCommand (4ms) [Parameters=[], CommandType='Text', CommandTimeout='30'] SELECT [MigrationId], [ProductVersion] FROM [__EFMigrationsHistory] ORDER BY [MigrationId];

No migrations were applied. The database is already up to date.

Я не хочу проверять базу данных при каждом вызове. Поэтому я изменил ServiceLifetime.Singleton. Но все же я вижу эту проверку запросов на каждый звонок.

services.AddDbContext<ApplicationDbContext>(options =>
{
    options.UseSqlServer(dbConnectionString,
        builder => builder.MigrationsAssembly(migrationsAssembly));
}, ServiceLifetime.Singleton, ServiceLifetime.Singleton);

На EF6 есть похожий вопрос: Как отключить проверку миграции при каждой инициализации DbContext

NullDatabaseInitializer не существует в ядре EF.

Что рекомендуется делать? Это нормальное поведение?

1 Ответ

0 голосов
/ 16 ноября 2018

Я нашел проблему: https://github.com/Microsoft/ApplicationInsights-aspnetcore/issues/778

После использования «настоящего» профилировщика SQL я обнаружил, что он работает, как и ожидалось, как сказал @ Ivan-Stoev. Запросы с моей стороны как-то использовали один и тот же operation_id. Таким образом, следы и зависимости, которые были показаны мне в приложении, где на самом деле не связаны.

Я исправил это, удалив по умолчанию DependecyTracking AI.

private void RemoveDefaultAiDependencyTracking(IServiceCollection services)
{
    var serviceDescriptor = services.FirstOrDefault(descriptor => descriptor.ImplementationType == typeof(DependencyTrackingTelemetryModule));
    services.Remove(serviceDescriptor);
}

Спасибо за ваше время и извините за трату его ..

...