.NET CoreのコンソールアプリケーションでEntity Framework Coreを使用しSQL Serverに接続する
Visual Studio 2019 も出てきて、これからは.NET Coreでの開発が進んで行くと思うのでキャッチアップのために.NET Coreプロジェクトを使い始めています。
.NET CoreプロジェクトでDBを扱うとなったら、当然Entity Framework Coreを使います。公式サイトはそれなりに充実しています。
しかし、コンソールアプリケーションでEntity Framework Coreを使用して新しいデータベースを作成する方法が、SQLiteを使った例になっているため、.NET CoreのコンソールアプリケーションでEntity Framework Coreを使用し、SQL Server LocalDBに接続する方法を調べました。
色々と参照しながら試したので、参考サイトはまとめていません。
パッケージのインストール
まずは、NuGetパッケージのインストールです。Entity Framework CoreでSQL Serverを使用するには、Microsoft.EntityFrameworkCore.SqlServer
をインストールします。SQL Server LocalDBもこのパッケージで対応しています。
必要なクラスの作成
次に、DbContextクラスを継承したクラス(コンテキストクラス)と、EntityとなるPOCOクラスを作成します。これは公式の例と一緒です。
コンテキストクラスでOnConfiguringメソッドをオーバーライドして、パラメータとして受け取ったDbContextOptionsBuilderクラスのUseSqlServerメソッドを呼び出し、パラメータとしてDBへの接続文字列を渡します。
SQL Server LocalDBへの接続文字列
Entity Frameworkとは接続文字列の書式が異なっていて、Server, Database, Trusted_Connectionを設定するようです。以下は、SQL Server LocalDBへの接続文字列の例です。
Server=(localdb)\mssqllocaldb;Database=(データベース名);Trusted_Connection=True
Entity Frameworkで使えたAttachDbFilenameは、Entity Framework Coreでも使えるようです。
Server=(localdb)\mssqllocaldb;Database=(データベース名);Trusted_Connection=True;AttachDbFilename=(mdfファイルを作成するパス)
データベースの新規作成
今回はマイグレーションを使用して、データベースを作成します。公式の例はコマンドプロンプト?で作業をしていますが、ここではVisual Studioを使います。
Visual Studioを使うと言っても、GUIなメニューはないため、パッケージマネージャーコンソールを開いてコマンドを実行します。
Microsoft.EntityFrameworkCore.Tools
をNuGetでインストールします。これによってパッケージマネージャーコンソールで必要なコマンドが追加されます。
以下のコマンドを実行すると、マイグレーション用のクラスが作成されます。
Add-Migration InitialCreate
以下のコマンドを実行すると、データベースが作成されます。
PM> Update-Database
データベースに接続する
ここまで来れば、Entity Frameworkと同じように使うことが出来ます。公式の例そのままで動きます。
以上です。