Поиск…


Вступление

SQLite - это автономная, безсерверная транзакционная база данных SQL. Он может использоваться в .NET-приложении, используя как свободно доступную библиотеку .NET SQLite, так и Entity Framework SQLite. В этом разделе рассказывается о настройке и использовании провайдера Entity Framework SQLite.

Настройка проекта для использования Entity Framework с поставщиком SQLite

Библиотека Entity Framework поставляется только с поставщиком SQL Server. Для использования SQLite потребуются дополнительные зависимости и конфигурация. Все необходимые зависимости доступны на NuGet.

Установка управляемых библиотек SQLite

Все управляемые настройки могут быть установлены с помощью консоли управления пакетами NuGet. Запустите команду Install-Package System.Data.SQLite .

Установка System.Data.SQLite

Как показано выше, при установке System.Data.SQLite все связанные с ним управляемые библиотеки устанавливаются вместе с ним. Сюда входит System.Data.SQLite.EF6 , поставщик EF для SQLite. Проект также теперь ссылается на сборки, необходимые для использования поставщика SQLite.

Ссылки на проекты

Включая неуправляемую библиотеку

Управляемые библиотеки SQLite зависят от неуправляемой сборки с именем SQLite.Interop.dll . Он входит в состав сборок пакетов, загружаемых с помощью пакета SQLite, и они автоматически копируются в ваш каталог сборки при создании проекта. Однако, поскольку он неуправляемый, он не будет включен в ваш список ссылок. Но обратите внимание: эта сборка наиболее распространена с приложением для сборки SQLite.

Примечание. Эта сборка зависит от бита, то есть вам нужно будет включить конкретную сборку для каждой битности, которую вы планируете поддерживать (x86 / x64).

Редактирование App.config проекта

Файл app.config потребует некоторых изменений, прежде чем SQLite можно будет использовать в качестве поставщика Entity Framework.

Необходимые исправления

При установке пакета файл app.config автоматически обновляется для включения необходимых записей для SQLite и SQLite EF. К сожалению, эти записи содержат некоторые ошибки. Они должны быть изменены до того, как они будут работать правильно.

Сначала найдите элемент DbProviderFactories в файле конфигурации. Он находится внутри элемента system.data и будет содержать следующее

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

Это может быть упрощено, чтобы содержать одну запись

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

При этом мы указали, что поставщики SQLite EF6 должны использовать фабрику SQLite.

Добавить строку подключения SQLite

Строки подключения могут быть добавлены в файл конфигурации в корневом элементе. Добавьте строку соединения для доступа к базе данных SQLite.

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

Здесь важно отметить provider . Он был установлен в System.Data.SQLite.EF6 . Это говорит EF, что, когда мы используем эту строку соединения, мы хотим использовать SQLite. Указанный data source является лишь примером и будет зависеть от местоположения и имени вашей базы данных SQLite.

Ваш первый SQLite DbContext

После завершения всей установки и конфигурации вы можете начать использовать DbContext который будет работать в вашей базе данных SQLite.

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

Указав name=TestContext , я указываю, что строка соединения TestContext, расположенная в файле app.config должна использоваться для создания контекста. Эта строка подключения была настроена на использование SQLite, поэтому в этом контексте будет использоваться база данных SQLite.



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow