サーチ…


前書き

SQLiteは、サーバレスのトランザクションレスSQLデータベースです。自由に利用できる.NET SQLiteライブラリとEntity Framework SQLiteプロバイダの両方を利用することにより、.NETアプリケーション内で使用できます。このトピックでは、Entity Framework SQLiteプロバイダのセットアップと使用方法について説明します。

SQLiteプロバイダでEntity Frameworkを使用するプロジェクトを設定する

Entity Frameworkライブラリには、SQL Serverプロバイダのみが付属しています。 SQLiteを使用するには、追加の依存関係と設定が必要です。必要な依存関係はすべてNuGetで利用できます。

SQLite管理ライブラリをインストールする

NuGet Package Manager Consoleを使用して、すべての管理されたdepedenciesをインストールできます。 Install-Package System.Data.SQLiteコマンドInstall-Package System.Data.SQLite実行しInstall-Package System.Data.SQLite

System.Data.SQLiteのインストール

上記のように、 System.Data.SQLiteインストールすると、関連するすべての管理対象ライブラリがインストールされます。これには、SQLiteのEFプロバイダであるSystem.Data.SQLite.EF6含まれます。このプロジェクトでは、SQLiteプロバイダを使用するために必要なアセンブリも参照するようになりました。

プロジェクト参照

アンマネージライブラリを含む

SQLite管理対象ライブラリは、 SQLite.Interop.dllという名前のアンマネージアセンブリに依存しています。これは、SQLiteパッケージでダウンロードされたパッケージアセンブリに含まれており、プロジェクトのビルド時に自動的にビルドディレクトリにコピーされます。ただし、管理されていないため、参照リストには含まれません。しかし、このアセンブリは、SQLiteアセンブリが動作するためのアプリケーションとともに配布されることが最も重要です。

注:このアセンブリはビットに依存します。つまり、サポートするビット数(x86 / x64)ごとに特定のアセンブリを含める必要があります。

プロジェクトのApp.configの編集

SQLiteをEntity Frameworkプロバイダとして使用するには、 app.configファイルにいくつかの変更が必要です。

必要な修正

パッケージをインストールすると、 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>

これで、EF6 SQLiteプロバイダが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

すべてのインストールと設定が完了したら、SQLiteデータベースで動作するDbContext使用を開始できます。

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

name=TestContext指定することで、 app.configファイルにあるTestContext接続文字列を使用してコンテキストを作成する必要があることを示しています。その接続文字列はSQLiteを使用するように設定されていたので、このコンテキストはSQLiteデータベースを使用します。



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow