VS 2017をインストールし、新しいコアプロジェクトを作成しました。その中に、私は追加しました:
また、クラスが含まれるModelsというフォルダーを作成しました。次に、パッケージマネージャーコンソールに移動してenable-migrationsを実行し、VSが必要なファイルを作成するようにしました。ただし、必要なファイルの代わりに、次のエラーが発生しました。
「移行の有効化」という用語は、コマンドレット、関数、スクリプトファイル、または操作可能なプログラムの名前として認識されません。名前のスペルを確認するか、パスが含まれていた場合は、パスが正しいことを確認してから再試行してください。
ここで何をするつもりですか?
私は運が悪そうに見える。これは非常に珍しい組み合わせ(Core VS17とEF)であるため、このテーマに関する情報はほとんどありません。 VS 2017がCoreをアップグレードするように見えるため、手作業でpackage.jsonを編集することについていくつかのガイドが説明しているため、dotnet restoreはxxx。 csproj。
要約すると、私は混乱しており、問題をどのように噛むかについてかなり不確かです。
EF CoreにはEnable-Migrations
コマンドがなくなりました。移行は「デフォルトで」有効になっています。 Add-Migration
を使用して新しい移行を追加します。
パッケージマネージャーコマンドに関するドキュメント こちら
前述したように、移行の有効化は廃止され、とにかくオンになっています。Add-MigrationInitialCreateを使用できます。
あなたがすることを追加します[〜#〜] not [〜#〜]既に参照しているように、プロジェクトにさらにパッケージを追加する必要がありますMicrosoft.AspNetCore.Allメタパッケージの必要なアセンブリ。
PM Power Shellコンソールの代わりに、コンソール(OSによってはcmd/Shell)を使用することもできます。そのためには、dotnetツールへの参照を追加する必要があります:プロジェクトを編集しますファイル(右クリックして「.csprojを編集」を選択し、ItemGroupに次の参照を追加します。
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0"></DotNetCliToolReference>
そして、コンソールにdotnet ef migrations add InitialCreate
と入力します
Visual Studio 2017とVS 2015からインポートされたプロジェクトで同様の問題が発生し、EF Migrationsは機能しなくなりました。
GitHubのドキュメントを読んだ後: https://github.com/aspnet/EntityFramework/issues/7031
Nugetでこのパッケージをインストールしました。
「Microsoft.EntityFrameworkCore」
複数のダウンロード/インストールのカスケード効果を引き起こしました。インストール後、VS 2017を再起動すると、すべてが正常に戻ります。
2日後、別のVisual Studio 2015プロジェクトで同じ問題が発生し、上記の手順に従って解決しましたが、この新しいエラーが発生しました。
「型によって違反された継承セキュリティルール: 'System.Net.Http.WebRequestHandler'。派生型は、基本型のセキュリティアクセシビリティに一致するか、アクセスしにくい必要があります。」
プロジェクトフレームワークを最新の ".NET Framework 4.6.2"にアップグレードすることでこのエラーを解決しました(怖い...しかし、それ以上問題なく動作しました)。
GitHubでこのドキュメントを参照しました: https://github.com/dotnet/corefx/issues/111
Microsoft.EntityFrameworkCore.Tools
をインストールした後、enable-migrations
を実行しようとすると、VS2017で次のメッセージが表示されました。
Enable-Migrations is obsolete. Use Add-Migration to start using Migrations.
それが役に立てば幸い。
解決済み
[ツール]-> [NuGetパッケージマネージャー]-> [パッケージマネージャーコンソール]に移動します。
書きます
install-package EntityFramework
それから
enable-migrations
このコマンドはプロジェクトの全ライフタイムで実行されます。つまり、プロジェクトで一度だけ記述する必要がありますが、モデルを変更したり、別のクラスを追加したり、このコマンドを使用できる変更を加えたりする場合
add-migration migrationNameTest
「migrationNameTest」は、移行を実行するために割り当てたい移行の名前ですが、パッケージマネージャーに移動して実行します
update-database