shion のアバター画像もくもくログページ一覧ブログ一覧技術メモ一覧ライセンス表記利用規約外部リンクconnpassGitHubSpeaker DeckTwitter[工事中]Shion のもくログバージョン1.2.5

もくもくログ

主にIT 関連のメモをもくもくと綴っていきます

この記事の情報は古い可能性があります
最終更新日:2017/05/08 12:31:41
Entity Framework + SQLite をコードファーストで開発するには(コマンドを使って)ASP.NET CoreEntity FrameworkSQLite

最近、Mac でASP.NET Core の開発を始めました。

Mac にはVisual Studio Code しか入っていないので、
コマンドラインで、プロジェクトの作成や
C# のコードからDB 作成しています。

そんな感じで開発をしていますが、
SQLite でコードファーストしようとして、ハマったので、
やり方をメモしたいと思います。

まず、自分の開発環境ですが、下記になります。

OS: Mac
IDE: Visual Studio Code
Framework: .NET Core 1.1, ASP.NET Core

注目点は.NET Core 1.1 を使っていることです。
1.0 の頃と挙動が変わっているので、注意が必要です。

さて、SQLite のコードファーストする方法を記載していきます。
手順は、こんな感じです。

1. プロジェクトを作成する

2. プロジェクトの依存関係を編集する

ここで詰まりました……。
結論ですが、.csproj に下記の依存関係を追加する必要がありました。
特に"DotNetCliToolReference" を忘れると、次のステップで使うコマンドが使えません

<ItemGroup>
    <PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="1.1.1" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="1.1.1" PrivateAssets="All" />
</ItemGroup>
<ItemGroup>
    <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="1.0.0" />
</ItemGroup>

上の依存関係を記述したら、下記のコマンドでパッケージをインストールしてください。

dotnet restore

Microsoft.EntityFrameworkCore.Design が無いと、コマンド実行時にエラーになりました。
DotNetCliToolReference ですが、NuGet で入れられませんでした(Windows のVisual Studio 2017 で確認しました)
 → NuGet だとPackageReference として追加しようとしてエラーになっているように見えます
 → Visual Studio 2017 で.csproj を編集する場合は、プロジェクトを右クリックすると(プロジェクト名).csproj を編集する というメニューを選択するとXML が表示されます。

3. エンティティのコードを作成する

テーブルの項目となるクラスと、DbContext を継承したクラスを作成してください。

4. コマンドを使って、SQLite のDB を作成する

まず、下記のコマンドを実行し、DB を作成するためのコードを生成します。

dotnet ef migrations add (適当な識別名)

上記のコマンドがうまくいったら、下記のコマンドを実行し、DB を作成します。

dotnet ef database update

5. 接続文字列を書いて、アクセスする

あとは、適切な場所で、作成したDB にアクセスするためのコードを実装します。

これで動くはずです。
詳細は、下記のリンクをご覧ください。

NET Core - New Database

一覧に戻る