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 .

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

Referencje projektu

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.



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow