EF Core context.SaveChanges () выполняется перед предыдущим оператором - PullRequest
0 голосов
/ 15 января 2020

В компании, в которой я работаю, я разрабатываю внутренний инструмент, который переносит данные из старой базы данных SQLite в новую SQL Серверную базу данных. После того, как я сделал все свои преобразования сущностей и добавил их в контекст назначения, я хочу зафиксировать их в целевом экземпляре базы данных и обновить с помощью консоли пользователя, что выполняется операция фиксации. Однако всякий раз, когда я запускаю это, строка не выводится на консоль до тех пор, пока контекст не завершит сброс изменений.

Единственное, о чем я могу думать, это то. NET Время выполнения ядра динамически переупорядочивать операции по какой-то причине, то есть оператор print не вызывается до тех пор, пока фиксация не завершится успешно или не удастся Это проблематично c с точки зрения UX для использования инструмента, так как неясно, происходит ли что-то на самом деле или нет, так как инструмент будет казаться зависшим на некоторое время.

Любые идеи, что происходит здесь или как я могу заставить операторы выполнять в нужном порядке?

private static void CommitChanges(InductosenseContext destinationContext)
{
    Console.Write("Committing changes to destination database...");
    destinationContext.SaveChanges();
    Console.WriteLine(" DONE.");
}
...