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ユニットを生成する必要があると思います。
人々が今やることを提案する通常のことは次のとおりです。
パッケージマネージャコンソールからの再インストールは次のようになりました。
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]
ステップを逃しました。 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コマンドの一般的な環境ではないパッケージマネージャーコンソールから実行しないでください。
以下は、ASP.NET Core RC1の一部であったdnxにのみ適用されます。これは置き換えられており、ASP.NET Coreの該当する部分ではありません。
Dnxコマンドを実行するために探しているより良い方法に関する質問への回答:
私のdnxコマンドもエラーを出していました。
「dnx」という用語は、コマンドレット、関数、
私のVisual StudioパッケージマネージャーコンソールとWindows PowerShellの両方で。
多くの不満の後、私はそれを解決することができました。
ここに私がそれを機能させるために行ったステップがあります
.dnx binディレクトリに移動します
cd\
cd users\YOURUSERNAME\.dnx\bin
コマンドを実行する
.\dnvm upgrade
「このシステムではスクリプトの実行が無効になっています」というエラーメッセージが表示された場合。次に、次のコマンドを実行して、最初に許可を与えます
Set-ExecutionPolicy RemoteSigned
Visual Studioを開きます。その後、パッケージマネージャーコンソールとPowerShellの両方でコマンドdnxを入力できます
dnx
そしてそれはそれを認識します