Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

EF Core でマイグレーションを実行する際に発生しうるエラーとその対処法

EF Core でマイグレーションを実行する際、各種実装後にパッケージマネージャーコンソールで以下のコマンドを実行します。

Add-Migration InitialCreate


Build failed.


No DbContext was found in assembly 'プロジェクト名'.


No DbContext was found in assembly 'プロジェクト名'. Ensure that you're using the correct assembly and that the type is neither abstract nor generic.

DBContext を定義していないプロジェクトでマイグレーションコマンドを実行しようとすると起きる事象です。
解決方法としては、DBContext を定義しているプロジェクトでマイグレーションコマンドを実行するようにしてください。

Your startup project 'プロジェクト名' doesn't reference Microsoft.EntityFrameworkCore.Design.


Your startup project 'プロジェクト名' doesn't reference Microsoft.EntityFrameworkCore.Design. This package is required for the Entity Framework Core Tools to work. Ensure your startup project is correct, install the package, and try again.

Microsoft.EntityFrameworkCore.Design がインストールされていないと起きる事象です。
解決方法としては、NuGet パッケージマネージャーで Microsoft.EntityFrameworkCore.Tools をインストールしてください。
Tools の中に Design も含まれています。

Startup project 'プロジェクト名' targets framework '.NETStandard'.


Startup project 'プロジェクト名' targets framework '.NETStandard'. There is no runtime associated with this framework, and projects targeting it cannot be executed directly. To use the Entity Framework Core Package Manager Console Tools with this project, add an executable project targeting .NET Framework or .NET Core that references this project, and set it as the startup project; or, update this project to cross-target .NET Framework or .NET Core. For more information on using the EF Core Tools with .NET Standard projects, see https://go.microsoft.com/fwlink/?linkid=2034705

csproj ファイルの TargetFramework が.NET Framework もしくは.NET Core になっていないと起きる事象です。
解決方法としては、.NET Framework もしくは.NET Core に設定されているか見直しましょう。



EF Core のマイグレーションはコマンドを実行するだけで簡単に実現できるので便利ですが、結構ハマりどころもあります。


.NET Core で DB マイグレーションを試したら色々ハマった話 - ecbeing labs(イーシービーイング・ラボ)

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
Help us understand the problem. What are the problem?