web-dev-qa-db-ja.com

Entity Framework Coreプロジェクトを実行し、nugetプロンプトからVisual Studio 2015に移行を追加するにはどうすればよいですか?

Visual Studio 2015では、ASP.net Coreプロジェクト(旧称ASP.NET 5)を作成しました。プロジェクトのテンプレートは、エンティティフレームワークといくつかの認証テーブルとともに、永続化のためのMS SQL localdbを作成します。

このプロジェクト用に作成されたlocaldbデータベースを参照する方法を理解した後、モデルオブジェクトを変更し、ASP.NET MVC Webサイトテンプレートサンプルアプリケーションを使用したコードファーストマイグレーションを試すことにしました。 EFを使用して、localdbにログインの永続性を提供します。使ってみた

デモアプリにはすでにMigrationsフォルダーが含まれています。ただし、add-migration SomeNameHereをパッケージマネージャーコンソールに入力した場合、またはenable-migrationsを入力した場合、サンプルプロジェクトでER移行を処理することはできないようです。

文字列プロパティをIdentityModel.csユニットに追加し、手動で0000...IdentitySchema.csファイルに手動で追加しようとしましたが、次のコマンドを実行するときのように、それを正しく行う方法がわかりません。アプリケーションで、以下に示すエラーが発生しました。 Entity Frameworkのコードファーストツールで基本的にMigrationsフォルダーに移動するスケルトン.csユニットを生成する必要があると思います。

人々が今やることを提案する通常のことは次のとおりです。

  • 管理者として実行したことを確認してください。 (完了)
  • Entity Frameworkをアンインストールし、アクティブにしたいソリューションに再インストールしてください(完了)

パッケージマネージャコンソールからの再インストールは次のようになりました。

PM> Uninstall-Package EntityFramework
Uninstalling NuGet package EntityFramework.7.0.0-beta4.
Successfully uninstalled 'EntityFramework.7.0.0-beta4' from WebApplicationDNX.
PM> Install-Package EntityFramework -IncludePrerelease
Installing NuGet package EntityFramework.7.0.0-beta4.
Successfully installed 'EntityFramework.7.0.0-beta4' to WebApplicationDNX.
PM> 

ここでは、add-migrationなどのコマンドを実行しようとしていて、実行できないため、間違いを犯していると思います。これは私がこのようなものを試すことは決してサポートされなかったことがわかりました:

PM> add-migration DummyMigrate
add-migration : The term 'add-migration' is not recognized as the name of a cmdlet, function, script file, or operable program. .... 
PM> enable-migration
enable-migration : The term 'enable-migration' is not recognized as the name of a cmdlet, function, script file, or operable program. 
...

ASP.NET 5 Preview Templates -> Web Siteテンプレートベースのアプリケーションから、Visual Studio 2015からエンティティフレームワークの移行を機能させることはできますか?

(アップデート1から4は、役に立たない歴史的なベータ版のため削除されました)

更新5:asp.netコア1.0.0-RC2では、dnxツールが廃止され、ドットネットに置き換えられましたが、dotnet efコマンドは、ソリューションディレクトリからではなく、プロジェクトソースディレクトリを作成するには、nugetコマンドラインプロンプトではなく、外部コマンドプロンプトを使用するか、PowerShell Tools for Visual Studioを使用する必要があります。

   solution-dir           project-source-dir
         |                       |
d:\dev\AspNetCoreWebAp\src\AspNetCoreWebAp>dotnet ef
Project AspNetCoreWebAp (.NETCoreApp,Version=v1.0) will be compiled because expected outputs are missing
Compiling AspNetCoreWebAp for .NETCoreApp,Version=v1.0
Compilation succeeded.
    0 Warning(s)
    0 Error(s)
Time elapsed 00:00:03.0846647

                     _/\__
               ---==/    \\
         ___  ___   |.    \|\
        | __|| __|  |  )   \\\
        | _| | _|   \_/ |  //|\\
        |___||_|       /   \\\/\\
Entity Framework .NET Core CLI Commands 1.0.0-preview1-20901
Usage: dotnet ef [options] [command]

enter image description here

17
Warren P

ステップを逃しました。 documentation から、ベータ8がアクティブであった時点で、欠落していたコマンドは次のようになります。

Install-Package EntityFramework.Commands -Preは、プロジェクトで移行コマンドを使用できるようにします。

Commandsは別のパッケージに移動されました。これは、おそらくメインフレームワークを本番環境でより軽量にするためであり、コマンドラインユーティリティを使用する必要がなく、必要ありません。

Answer-Update-contributed-by-Warren:Asp.net core 1.0.0-RC2では、関連するパッケージの名前はMicrosoft.EntityFrameworkCore.Toolsそして、それはASP.Net Core Webアプリケーションテンプレートの一部であるように見え、誰かが実際にproject.jsonを損傷しない限り、元の問題が発生する可能性はほとんどありません。コマンドラインの "EF"移行コマンドは、DOTNETコマンドの一般的な環境ではないパッケージマネージャーコンソールから実行しないでください。

4
Claies

以下は、ASP.NET Core RC1の一部であったdnxにのみ適用されます。これは置き換えられており、ASP.NET Coreの該当する部分ではありません。

Dnxコマンドを実行するために探しているより良い方法に関する質問への回答:

私のdnxコマンドもエラーを出していました。

「dnx」という用語は、コマンドレット、関数、

私のVisual StudioパッケージマネージャーコンソールとWindows PowerShellの両方で。

多くの不満の後、私はそれを解決することができました。

ここに私がそれを機能させるために行ったステップがあります

  • Visual Studioのすべてのインスタンスを閉じる
  • C:\ Users\YOURUSERNAME\.dnxの.dnxフォルダーを削除します。鉱山は1 GBをはるかに超えていました
  • Visual Studio 2015を開きます。新しいデフォルトテンプレートASP.NET 5 Webアプリケーションを作成します。ビルドして実行します。これにより、.dnxフォルダーが再作成されます。その後、フォルダーのサイズは600MB近くになりました
  • Powershellを開く
  • .dnx binディレクトリに移動します

    cd\
    cd users\YOURUSERNAME\.dnx\bin
    
  • コマンドを実行する

    .\dnvm upgrade
    

    「このシステムではスクリプトの実行が無効になっています」というエラーメッセージが表示された場合。次に、次のコマンドを実行して、最初に許可を与えます

    Set-ExecutionPolicy RemoteSigned
    

Visual Studioを開きます。その後、パッケージマネージャーコンソールとPowerShellの両方でコマンドdnxを入力できます

   dnx

そしてそれはそれを認識します

enter image description here

22
devfric