Entity Framework
Enhetsram med SQLite
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
.
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.
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.