Как закрыть файл sqlite, открытый с помощью System.Data.SQLite и DbContext?C#

Место общения программистов C#
Ответить
Anonymous
 Как закрыть файл sqlite, открытый с помощью System.Data.SQLite и DbContext?

Сообщение Anonymous »

В моей версии EF6 этого пошагового руководства по созданию базы данных SQLite и доступу к ней с помощью System.Data.SQLite я обнаружил, что при любом доступе к базе данных дескриптор файла базы данных остается открытым еще долгое время после того, как я удалил единственную одноразовый объект, который я создал: DbContext.

Это не позволяет мне удалить файл базы данных, когда я закончил с ним (например, по завершении модульного теста или когда пользователь моего приложение запрашивает это).

Вы можете увидеть, насколько просто я использую DbContext и как File.Delete после его закрытия завершается с ошибкой:

Код: Выделить всё

using (var context = new ChinookContext())
{
var artists = from a in context.Artists
where a.Name.StartsWith("A")
orderby a.Name
select a;

foreach (var artist in artists)
{
Console.WriteLine(artist.Name);
}
}

// I've disposed of the DbContext. All handles to the sqlite database file SHOULD
// have been released by now.
// Yet, this next line fails because the file is still locked.
File.Delete("Chinook_Sqlite_AutoIncrementPKs.sqlite");
(полный контекст проекта на github)

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

Кстати, я знаю, что часто задаваемые вопросы № 22 о блокировках файлов снимаются только тогда, когда я удаляю команду, средство чтения данных и т. д., но я этого не сделал. Я сам ничего из этого не открывал, поэтому не знаю, как от них избавиться.

Подробнее здесь: https://stackoverflow.com/questions/314 ... -dbcontext
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»