Sök…


Introduktion

SQLite är en fristående, serverlös, transaktionell SQL-databas. Det kan användas i en .NET-applikation genom att använda både ett fritt tillgängligt. NET SQLite-bibliotek och Entity Framework SQLite-leverantör. Detta ämne kommer att gå in på installation och användning av leverantören av Entity Framework SQLite.

Ställa in ett projekt för att använda Entity Framework med en SQLite-leverantör

Entity Framework-biblioteket levereras endast med en SQL Server-leverantör. För att använda SQLite krävs ytterligare beroenden och konfiguration. Alla nödvändiga beroenden är tillgängliga på NuGet.

Installera SQLite Managed Libraries

Alla de hanterade beredskapen kan installeras med NuGet Package Manager Console. Kör kommandot Install-Package System.Data.SQLite .

Installera System.Data.SQLite

Som visas ovan, när du installerar System.Data.SQLite , installeras alla relaterade hanterade bibliotek med det. Detta inkluderar System.Data.SQLite.EF6 , EF-leverantören för SQLite. Projektet refererar nu också till de enheter som krävs för att använda SQLite-leverantören.

Projektreferenser

Inklusive Unmanaged Library

De SQLite-hanterade biblioteken är beroende av en okontrollerad SQLite.Interop.dll heter SQLite.Interop.dll . Det ingår i paketenheterna som laddas ner med SQLite-paketet, och de kopieras automatiskt till din build-katalog när du bygger projektet. Eftersom det inte är hanterat kommer det emellertid inte att inkluderas i din referenslista. Men notera att denna enhet distribueras mest med applikationen för att SQLite-enheterna ska fungera.

Obs: Den här enheten är bitberoende, vilket innebär att du måste inkludera en specifik enhet för varje bitness du planerar att stödja (x86 / x64).

Redigera projektets App.config

app.config filen kommer att kräva några ändringar innan SQLite kan användas som en leverantör av Entity Framework.

Obligatoriska korrigeringar

När du installerar paketet app.config filen automatiskt så att de inkluderar nödvändiga poster för SQLite och SQLite EF. Tyvärr innehåller dessa poster några fel. De måste ändras innan det fungerar korrekt.

Först ska du hitta DbProviderFactories elementet i konfigurationsfilen. Det finns inom system.data elementet och kommer att innehålla följande

<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>

Detta kan förenklas för att innehålla en enda post

<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>

Med detta har vi angett att EF6 SQLite-leverantörerna ska använda SQLite-fabriken.

Lägg till SQLite-anslutningssträng

Anslutningssträngar kan läggas till i konfigurationsfilen i rotelementet. Lägg till en anslutningssträng för åtkomst till en SQLite-databas.

<connectionStrings>
    <add name="TestContext" connectionString="data source=testdb.sqlite;initial catalog=Test;App=EntityFramework;" providerName="System.Data.SQLite.EF6"/>
</connectionStrings>

Det viktiga att notera här är provider . Det har ställts in på System.Data.SQLite.EF6 . Detta säger till EF att när vi använder den här anslutningssträngen, vill vi använda SQLite. Den data source angivna är bara ett exempel och kommer att vara beroende av plats och namnet på din SQLite databas.

Din första SQLite DbContext

När all installation och konfiguration är klar kan du nu börja använda en DbContext som fungerar på din SQLite-databas.

public class TestContext : DbContext
{
    public TestContext()
        : base("name=TestContext") { }
}

Genom att ange name=TestContext , har jag indikerat att TestContext-anslutningssträngen som finns i app.config filen bör användas för att skapa kontext. Den anslutningssträngen konfigurerades för att använda SQLite, så det här sammanhanget kommer att använda en SQLite-databas.



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow