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 .

System.Data.SQLite installeren

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.

Projectreferenties

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.



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow