Entity Framework
Entity Framework mit SQLite
Suche…
Einführung
SQLite ist eine eigenständige, serverlose, transaktionale SQL-Datenbank. Es kann in einer .NET-Anwendung verwendet werden, indem sowohl eine frei verfügbare .NET SQLite-Bibliothek als auch ein Entity Framework SQLite-Anbieter verwendet wird. Dieses Thema befasst sich mit der Einrichtung und Verwendung des Entity Framework SQLite-Anbieters.
Einrichten eines Projekts zur Verwendung von Entity Framework mit einem SQLite-Anbieter
Die Entity Framework-Bibliothek wird nur mit einem SQL Server-Anbieter geliefert. Für die Verwendung von SQLite sind zusätzliche Abhängigkeiten und Konfigurationen erforderlich. Alle erforderlichen Abhängigkeiten sind in NuGet verfügbar.
Installieren Sie verwaltete SQLite-Bibliotheken
Alle manipulierten Versionen können mithilfe der NuGet Package Manager Console installiert werden. Führen Sie den Befehl Install-Package System.Data.SQLite
.
Wie oben gezeigt, werden bei der Installation von System.Data.SQLite
alle verwalteten verwalteten Bibliotheken zusammen mit diesem installiert. Dies umfasst System.Data.SQLite.EF6
, den EF-Anbieter für SQLite. Das Projekt verweist jetzt auch auf die Assemblys, die zur Verwendung des SQLite-Providers erforderlich sind.
Einschließlich der nicht verwalteten Bibliothek
Die von SQLite verwalteten Bibliotheken sind von einer nicht verwalteten Assembly mit dem Namen SQLite.Interop.dll
. Es ist in den Paketassemblys enthalten, die mit dem SQLite-Paket heruntergeladen wurden. Diese werden beim Erstellen des Projekts automatisch in Ihr Build-Verzeichnis kopiert. Da es jedoch nicht verwaltet wird, wird es nicht in Ihre Referenzliste aufgenommen. Beachten Sie jedoch, dass diese Assembly meistens mit der Anwendung verteilt wird, damit die SQLite-Assemblys funktionieren.
Hinweis: Diese Assembly ist bitabhängig, dh Sie müssen für jede zu unterstützende Bitness (x86 / x64) eine spezifische Assembly einfügen.
Bearbeiten der App.config des Projekts
Die Datei app.config
erfordert einige Änderungen, bevor SQLite als Entity Framework-Anbieter verwendet werden kann.
Erforderliche Korrekturen
Bei der Installation des Pakets wird die Datei app.config
automatisch aktualisiert, um die erforderlichen Einträge für SQLite und SQLite EF aufzunehmen. Leider enthalten diese Einträge einige Fehler. Sie müssen modifiziert werden, bevor es korrekt funktioniert.
DbProviderFactories
das DbProviderFactories
Element in der Konfigurationsdatei. Es befindet sich im Element system.data
und enthält Folgendes
<DbProviderFactories>
<remove invariant="System.Data.SQLite.EF6" />
<add name="SQLite Data Provider (Entity Framework 6)" invariant="System.Data.SQLite.EF6" description=".NET Framework Data Provider for SQLite (Entity Framework 6)" type="System.Data.SQLite.EF6.SQLiteProviderFactory, System.Data.SQLite.EF6" />
<remove invariant="System.Data.SQLite" /><add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".NET Framework Data Provider for SQLite" type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" />
</DbProviderFactories>
Dies kann vereinfacht werden, um einen einzelnen Eintrag zu enthalten
<DbProviderFactories>
<add name="SQLite Data Provider" invariant="System.Data.SQLite.EF6" description=".NET Framework Data Provider for SQLite" type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" />
</DbProviderFactories>
Damit haben wir festgelegt, dass die EF6-SQLite-Anbieter die SQLite-Factory verwenden sollen.
Fügen Sie die SQLite-Verbindungszeichenfolge hinzu
Verbindungszeichenfolgen können der Konfigurationsdatei innerhalb des Root-Elements hinzugefügt werden. Fügen Sie eine Verbindungszeichenfolge für den Zugriff auf eine SQLite-Datenbank hinzu.
<connectionStrings>
<add name="TestContext" connectionString="data source=testdb.sqlite;initial catalog=Test;App=EntityFramework;" providerName="System.Data.SQLite.EF6"/>
</connectionStrings>
Wichtig hierbei ist der provider
. Es wurde auf System.Data.SQLite.EF6
. Dies teilt EF mit, dass bei Verwendung dieser Verbindungszeichenfolge SQLite verwendet werden soll. Die angegebene data source
ist nur ein Beispiel und hängt vom Speicherort und Namen Ihrer SQLite-Datenbank ab.
Ihr erster SQLite DbContext
DbContext
die Installation und Konfiguration abgeschlossen ist, können Sie jetzt einen DbContext
, der für Ihre SQLite-Datenbank verwendet werden kann.
public class TestContext : DbContext
{
public TestContext()
: base("name=TestContext") { }
}
Durch die Angabe von name=TestContext
ich app.config
, dass die TestContext-Verbindungszeichenfolge in der Datei app.config
zum Erstellen des Kontexts verwendet werden soll. Diese Verbindungszeichenfolge wurde für die Verwendung von SQLite konfiguriert. In diesem Kontext wird eine SQLite-Datenbank verwendet.