Ошибка "Файл не найден" при удалении файла SQL Server Compact 4.0 вручную при использовании миграции Entity Framework 4.3
Я тестирую наше приложение для использования базы данных SQL Server Compact 4.0. Приложение использует базу данных, если она есть, или создает ее, используя Entity Framework 4.3. Миграции, когда она отсутствует.
Однако, когда я удаляю файл, когда программа находится в режиме ожидания, а затем выполняю действие, которое вызывает чтение базы данных, я получаю File not found
ошибка. Это вряд ли сценарий реального мира, но я хочу понять, что происходит.
Кажется, что где-то на заднем плане фреймворк отслеживает тот факт, что уже была проверена необходимость создания базы данных. Я не уверен, нравится ли мне это, если это действительно так.
Итак, почему база данных создается при первом обращении к ней, но не создается заново во время работы программы? (Я понимаю, что для этого будет много веских причин, но я хочу знать, где находится реализация).
1 ответ
Поскольку создание базы данных является частью инициализации EF, инициализация обычно происходит только один раз для каждого типа контекста, когда контекст используется для извлечения или сохранения данных в первый раз. Удаление базы данных, когда ваше приложение выполняется, не является вариантом использования EF, поэтому, если вы хотите поддержать этот сценарий, вы должны справиться с этим самостоятельно. Вы можете попытаться повторно инициализировать EF, используя dbContext.Database.Initialize(true);
Не запускайте эту операцию без реальной необходимости, потому что инициализация - очень дорогая операция, и в вашем приложении нет потока. может получить доступ к базе данных во время инициализации.