Dies verhindert, dass ich die Datenbankdatei lösche, wenn ich damit fertig bin (z. B. am Ende eines Komponententests oder wenn der Benutzer meiner App fragt danach).
Sie können sehen, wie einfach meine Verwendung von DbContext ist und wie File.Delete nach dem Schließen fehlschlägt:
Code: Select all
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");
Irgendwelche Ideen, was mir fehlt, um das zu schließen Dateihandle?
Übrigens bin ich mir der FAQ Nr. 22 zu Dateisperren bewusst, die nur aufgehoben werden, wenn ich Befehle, Datenleser usw. entferne, aber ich habe Da ich keines davon selbst geöffnet habe, weiß ich nicht, wie ich es entsorgen kann sie.