Entity Framework
SQLiteを使用したエンティティフレームワーク
サーチ…
前書き
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
インストールすると、関連するすべての管理対象ライブラリがインストールされます。これには、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データベースを使用します。