Entity Framework
Entity Framework z SQLite
Szukaj…
Wprowadzenie
SQLite jest samodzielną, bezserwerową, transakcyjną bazą danych SQL. Można go używać w aplikacji .NET, wykorzystując zarówno darmową bibliotekę .NET SQLite, jak i dostawcę Entity Framework SQLite. W tym temacie omówiono konfigurację i korzystanie z dostawcy Entity Framework SQLite.
Konfigurowanie projektu do korzystania z Entity Framework z dostawcą SQLite
Biblioteka Entity Framework jest dostarczana tylko z dostawcą SQL Server. Korzystanie z SQLite będzie wymagało dodatkowych zależności i konfiguracji. Wszystkie wymagane zależności są dostępne w NuGet.
Zainstaluj biblioteki zarządzane SQLite
Wszystkie zmienione zależności można zainstalować za pomocą konsoli Menedżera pakietów NuGet. Uruchom polecenie Install-Package System.Data.SQLite
.
Jak pokazano powyżej, podczas instalacji System.Data.SQLite
instalowane są wszystkie powiązane biblioteki zarządzane. Dotyczy to System.Data.SQLite.EF6
, dostawcy EF dla SQLite. Projekt odwołuje się teraz również do zestawów wymaganych do korzystania z dostawcy SQLite.
W tym niezarządzana biblioteka
Biblioteki zarządzane SQLite zależą od niezarządzanego zestawu o nazwie SQLite.Interop.dll
. Jest dołączony do zestawów pakietów pobranych z pakietem SQLite i są one automatycznie kopiowane do katalogu kompilacji podczas budowania projektu. Ponieważ jednak nie jest zarządzany, nie zostanie uwzględniony na liście referencyjnej. Należy jednak pamiętać, że ten zespół najczęściej jest dystrybuowany wraz z aplikacją do działania zestawów SQLite.
Uwaga: Ten zestaw jest zależny od bitów, co oznacza, że musisz dołączyć konkretny zestaw dla każdej bitowości, którą planujesz obsługiwać (x86 / x64).
Edycja App.config projektu
Plik app.config
będzie wymagał pewnych modyfikacji, zanim SQLite będzie mógł być używany jako dostawca Entity Framework.
Wymagane poprawki
Podczas instalowania pakietu plik app.config
jest automatycznie aktualizowany, aby zawierał niezbędne wpisy dla SQLite i SQLite EF. Niestety te wpisy zawierają pewne błędy. Muszą zostać zmodyfikowane, aby działało poprawnie.
Najpierw zlokalizuj element DbProviderFactories
w pliku konfiguracyjnym. Znajduje się w elemencie system.data
i będzie zawierać następujące elementy
<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>
Można to uprościć, aby zawierało pojedynczy wpis
<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>
Dzięki temu określiliśmy, że dostawcy EF6 SQLite powinni korzystać z fabryki SQLite.
Dodaj ciąg połączenia SQLite
Parametry połączenia można dodać do pliku konfiguracyjnego w elemencie głównym. Dodaj ciąg połączenia, aby uzyskać dostęp do bazy danych SQLite.
<connectionStrings>
<add name="TestContext" connectionString="data source=testdb.sqlite;initial catalog=Test;App=EntityFramework;" providerName="System.Data.SQLite.EF6"/>
</connectionStrings>
Ważną rzeczą do odnotowania tutaj jest provider
. Został ustawiony na System.Data.SQLite.EF6
. To mówi EF, że kiedy używamy tego ciągu połączenia, chcemy użyć SQLite. Podane data source
danych jest tylko przykładem i będzie zależało od lokalizacji i nazwy bazy danych SQLite.
Twój pierwszy SQLite DbContext
Po zakończeniu instalacji i konfiguracji możesz teraz rozpocząć korzystanie z DbContext
który będzie działał na bazie danych SQLite.
public class TestContext : DbContext
{
public TestContext()
: base("name=TestContext") { }
}
Podając name=TestContext
, name=TestContext
, że do utworzenia kontekstu należy użyć ciągu połączenia TestContext znajdującego się w pliku app.config
. Ten ciąg połączenia został skonfigurowany do używania SQLite, więc w tym kontekście będzie używana baza danych SQLite.