ご存知のように、Visual Studio 2017の最新バージョンは 'project.json'を破棄し、代わりに.csproj
を使用します。
RTMバージョンを使用していて、既存のデータベースからモデルを生成したい このガイド に従います。最後のステップでエラーが発生しました:
パッケージマネージャーコンソールのEntity Framework Coreコマンドは、csprojベースの.NET Coreプロジェクトをまだサポートしていません。代わりに.NETコマンドラインツール(つまり、dotnet ef)を使用してください。詳細については、 https://go.Microsoft.com/fwlink/?linkid=834381 を参照してください。
エラーに続いて、記載されているリンクを使用してdotnet ef
に切り替えました。これが私のパッケージマネージャーコマンドです:
PM> dotnet ef dbcontext scaffold "Server = .; Database = Jumpstart; Trusted_Connection = True;" Microsoft.EntityFrameworkCore.SqlServer
次に、エラーが再び発生します。
dotnet:コマンド「dotnet-ef」に一致する実行可能ファイルが見つかりません
ヘルプコマンドを使用しましたが、dotnetにefというコマンドがないことがわかりました。
既存のデータベースからモデルを生成したいだけです。
このチュートリアルに従ってください
https://docs.Microsoft.com/en-us/aspnet/core/data/ef-mvc/migrations
私も同じ問題を抱えていました。 。csprojのItemGroupセクションを次のように編集しました
<ItemGroup>
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="1.0.0" />
</ItemGroup>
受け入れられた回答がエラーメッセージの最も可能性の高い原因です。ただし、.csproj
ファイル内に適切な参照を追加する以外にPackage Manager Console
からの現在のディレクトリがASP.NET Coreプロジェクトを指していることを確認してください、それ以外の場合はdotnet ef
コマンドOPタイトルに記載されているエラーで失敗します。
私の問題はtools
を次のように変更することで解決しました:
"tools": {
"Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.1.0-preview4-final",
"Microsoft.EntityFrameworkCore.Tools.DotNet": "1.1.0-preview4-final"
},
次に、次の2つのコマンドを実行します。
dotnet restore
-パッケージを復元する私は問題を解決しました
すべての回答で、ツールDotNetの追加について言及しましたが、以下で言及するいくつかのコマンドを逃したため、問題は解決しません
EF Core .NETコマンドラインツールは、*。csprojファイルを手動で編集してインストールします。
Microsoft.EntityFrameworkCore.Tools.DotNetをDotNetCliToolReferenceとして追加します。以下のサンプルプロジェクトを参照してください。
<ItemGroup>
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="1.0.0" />
</ItemGroup>
コアバージョン2ではバージョンが変更されましたが、その後2つのコマンドも実行されるはずです
次に、すべての回答のimportatn部分が欠落しています(このコマンドは、Visual Studio 2017で私の問題を解決しました)
1-実行dotnet add package Microsoft.EntityFrameworkCore.Design
2-実行dotnet restore
。復元が成功しない場合は、ツールが正しくインストールされていない可能性があります。
詳細情報 https://docs.Microsoft.com/en-us/ef/core/miscellaneous/cli/dotnet
NetCore 2.0では、Add-Migrations
を実行するだけです。
名前を尋ねるだけです。 appsettings.jsonにデフォルトの接続文字列があることを確認してください