Entity Framework
Entity Framework met SQLite
Zoeken…
Invoering
SQLite is een onafhankelijke, serverloze, transactionele SQL-database. Het kan worden gebruikt binnen een .NET-toepassing door gebruik te maken van zowel een vrij beschikbare .NET SQLite-bibliotheek als Entity Framework SQLite-provider. Dit onderwerp gaat in op de installatie en het gebruik van de Entite Framework SQLite-provider.
Een project opzetten om Entity Framework te gebruiken met een SQLite-provider
De Entity Framework-bibliotheek wordt alleen geleverd met een SQL Server-provider. Voor het gebruik van SQLite zijn aanvullende afhankelijkheden en configuratie vereist. Alle vereiste afhankelijkheden zijn beschikbaar op NuGet.
Installeer SQLite Managed Libraries
Alle beheerde afhankelijkheden kunnen worden geïnstalleerd met behulp van de NuGet Package Manager-console. Voer de opdracht Install-Package System.Data.SQLite
.
Zoals hierboven getoond, worden bij het installeren van System.Data.SQLite
alle gerelateerde beheerde bibliotheken ermee geïnstalleerd. Dit omvat System.Data.SQLite.EF6
, de EF-provider voor SQLite. Het project verwijst nu ook naar de assemblages die nodig zijn om de SQLite-provider te gebruiken.
Inclusief onbeheerde bibliotheek
De door SQLite beheerde bibliotheken zijn afhankelijk van een onbeheerde assembly met de naam SQLite.Interop.dll
. Het is inbegrepen bij de pakketassemblages die zijn gedownload met het SQLite-pakket en ze worden automatisch gekopieerd naar uw build-directory wanneer u het project bouwt. Omdat het echter onbeheerd is, wordt het niet opgenomen in uw referentielijst. Maar let op, deze assemblage wordt het meest gedistribueerd met de applicatie om de SQLite-assemblages te laten werken.
Opmerking: deze assembly is bitafhankelijk, wat betekent dat u een specifieke assembly moet opnemen voor elke bitness die u wilt ondersteunen (x86 / x64).
App.config van het project bewerken
Het app.config
bestand vereist enkele aanpassingen voordat SQLite als Entity Framework-provider kan worden gebruikt.
Vereiste fixes
Bij de installatie van het pakket wordt het bestand app.config
automatisch bijgewerkt met de benodigde vermeldingen voor SQLite en SQLite EF. Helaas bevatten deze vermeldingen enkele fouten. Ze moeten worden aangepast voordat het correct werkt.
Zoek eerst het element DbProviderFactories
in het configuratiebestand. Het bevindt zich in het system.data
element en zal het volgende bevatten
<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>
Dit kan worden vereenvoudigd om een enkele invoer te bevatten
<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>
Hiermee hebben we gespecificeerd dat de EF6 SQLite-providers de SQLite-fabriek moeten gebruiken.
Voeg een SQLite-verbindingsreeks toe
Verbindingsreeksen kunnen worden toegevoegd aan het configuratiebestand binnen het root-element. Voeg een verbindingsreeks toe voor toegang tot een SQLite-database.
<connectionStrings>
<add name="TestContext" connectionString="data source=testdb.sqlite;initial catalog=Test;App=EntityFramework;" providerName="System.Data.SQLite.EF6"/>
</connectionStrings>
Het belangrijkste om hier op te merken is de provider
. Het is ingesteld op System.Data.SQLite.EF6
. Dit vertelt EF dat wanneer we deze verbindingsreeks gebruiken, we SQLite willen gebruiken. De opgegeven data source
is slechts een voorbeeld en is afhankelijk van de locatie en naam van uw SQLite-database.
Uw eerste SQLite DbContext
Met alle installatie en configuratie voltooid, kunt u nu een DbContext
gaan gebruiken die werkt op uw SQLite-database.
public class TestContext : DbContext
{
public TestContext()
: base("name=TestContext") { }
}
Door name=TestContext
, heb ik aangegeven dat de TestContext-verbindingsreeks in het bestand app.config
moet worden gebruikt om de context te maken. Die verbindingsreeks is geconfigureerd om SQLite te gebruiken, dus deze context gebruikt een SQLite-database.