web-dev-qa-db-ja.com

VS 2017 .NET CoreでEntity Frameworkの移行を有効にできません

VS 2017をインストールし、新しいコアプロジェクトを作成しました。その中に、私は追加しました:

  • Microsoft.EntityFrameworkCore(1.1.0)
  • Microsoft.NETCore.App(1.1.0)

また、クラスが含まれるModelsというフォルダーを作成しました。次に、パッケージマネージャーコンソールに移動してenable-migrationsを実行し、VSが必要なファイルを作成するようにしました。ただし、必要なファイルの代わりに、次のエラーが発生しました。

「移行の有効化」という用語は、コマンドレット、関数、スクリプトファイル、または操作可能なプログラムの名前として認識されません。名前のスペルを確認するか、パスが含まれていた場合は、パスが正しいことを確認してから再試行してください。

ここで何をするつもりですか?

私は運が悪そうに見える。これは非常に珍しい組み合わせ(Core VS17とEF)であるため、このテーマに関する情報はほとんどありません。 VS 2017がCoreをアップグレードするように見えるため、手作業でpackage.jsonを編集することについていくつかのガイドが説明しているため、dotnet restorexxx。 csproj

要約すると、私は混乱しており、問題をどのように噛むかについてかなり不確かです。

13

EF CoreにはEnable-Migrationsコマンドがなくなりました。移行は「デフォルトで」有効になっています。 Add-Migrationを使用して新しい移行を追加します。

パッケージマネージャーコマンドに関するドキュメント こちら

17
Dmitry

前述したように、移行の有効化は廃止され、とにかくオンになっています。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と入力します

。NET Coreに移行を追加

。NET Core CLI

2
David Refaeli

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

2
Alex

Microsoft.EntityFrameworkCore.Toolsをインストールした後、enable-migrationsを実行しようとすると、VS2017で次のメッセージが表示されました。

Enable-Migrations is obsolete. Use Add-Migration to start using Migrations.

それが役に立てば幸い。

1
franco148

解決済み

  1. プロジェクトを右クリックして、次のオプションをクリックします:NuGetパッケージの管理; [参照]で、EntityFrameworkアドオンを探してインストールし、Visual Studioを再起動します。
  2. DbContextから継承するMyDbContextクラスを作成します。
  3. [ツール]> [NuGetパッケージマネージャー]> [パッケージマネージャーコンソール]
  4. 移行の有効化
  5. add-migration InitialModel
0
Luisitox

[ツール]-> [NuGetパッケージマネージャー]-> [パッケージマネージャーコンソール]に移動します。

書きます

install-package EntityFramework

それから

enable-migrations

このコマンドはプロジェクトの全ライフタイムで実行されます。つまり、プロジェクトで一度だけ記述する必要がありますが、モデルを変更したり、別のクラスを追加したり、このコマンドを使用できる変更を加えたりする場合

add-migration migrationNameTest

「migrationNameTest」は、移行を実行するために割り当てたい移行の名前ですが、パッケージマネージャーに移動して実行します

update-database
0
Chameleon