Microsoft.EntityFramework.Core
とSQLiteでASP.Net Core RC2を使用してプロジェクトのサンプルを作成しています。
私はこのチュートリアルに従っています: https://damienbod.com/2015/08/30/asp-net-5-with-sqlite-and-entity-framework-7/
しかし、このコマンドを実行すると:
dotnet ef migrations add FirstMigration
私はこのエラーを受け取りました:
No executable found matching command "dotnet-ef"
ここに私のproject.json
設定があります:
{
"dependencies": {
"Microsoft.NETCore.App": {
"version": "1.0.0-rc2-3002702",
"type": "platform"
},
"Microsoft.AspNetCore.Mvc": "1.0.0-rc2-final",
"Microsoft.AspNetCore.Server.IISIntegration": "1.0.0-rc2-final",
"Microsoft.AspNetCore.Server.Kestrel": "1.0.0-rc2-final",
"Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0-rc2-final",
"Microsoft.Extensions.Configuration.FileExtensions": "1.0.0-rc2-final",
"Microsoft.Extensions.Configuration.Json": "1.0.0-rc2-final",
"Microsoft.Extensions.Logging": "1.0.0-rc2-final",
"Microsoft.Extensions.Logging.Console": "1.0.0-rc2-final",
"Microsoft.Extensions.Logging.Debug": "1.0.0-rc2-final",
"Microsoft.EntityFrameworkCore": "1.0.0-rc2-final",
"Microsoft.EntityFrameworkCore.Sqlite": "1.0.0-rc2-final"
},
"tools": {
"Microsoft.AspNetCore.Server.IISIntegration.Tools": {
"version": "1.0.0-preview1-final",
"imports": "portable-net45+win8+dnxcore50"
}
},
"frameworks": {
"netcoreapp1.0": {
"imports": [
"dotnet5.6",
"dnxcore50",
"portable-net45+win8"
]
}
},
"buildOptions": {
"emitEntryPoint": true,
"preserveCompilationContext": true
},
"runtimeOptions": {
"gcServer": true
},
"publishOptions": {
"include": [
"wwwroot",
"Views",
"appsettings.json",
"web.config"
]
},
"scripts": {
"postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ]
}
}
Entity Framework Core 1.0
Project.jsonファイルのtools
セクションを更新して、これを含める必要があります。
"Microsoft.EntityFrameworkCore.Tools": {
"version": "1.0.0-preview1-final",
"imports": [
"portable-net45+win8+dnxcore50",
"portable-net45+win8"
]
}
これにより、dotnet ef
コマンドが使用可能になります。
重要
また、dotnet ef
コマンドは、project.jsonファイルを含む同じディレクトリから実行する場合にのみ使用できることに注意してください。
Entity Framework Core 1.1
Entity Framework Core 1.1へのアップグレード後に再びこの問題が発生する場合は、Microsoft.EntityFrameworkCore.Tools
依存関係をMicrosoft.EntityFrameworkCore.Tools.DotNet
バージョン1.1.0-preview4
に置き換えてください。 imports
セクションを保持する必要もありません。この詳細については、 Entity Framework Core 1.1リリース発表ブログ投稿 の下の「1.1へのアップグレード」の見出しを参照してください。
Entity Framework Core 1.1
Project.jsonファイルなしで新しい.csprojプロジェクトでVS2017を使用している場合は、これに追加します
.csprojファイルを編集する必要があります(ソリューションエクスプローラーで右クリックし、whatever.csprojの編集をクリックします)。次に、これを
<ItemGroup>
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet">
<Version>1.0.0-*</Version>
</DotNetCliToolReference>
</ItemGroup>
礼儀: https://github.com/aspnet/EntityFramework/issues/7358#issuecomment-278379967
VS2017 15.3以降およびASP.NET CORE 2.0以降に固有...
コマンドラインまたはnugetパッケージマネージャーを使用して、dbプロバイダーのnugetをインストールします。
dotnet add package Microsoft.EntityFrameworkCore.SqlServer
.csprojに次のセクションを追加します
<ItemGroup>
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet"
Version="2.0.0" />
</ItemGroup>
VS2017でコマンドラインまたはNuget Managerを使用して設計時ツールをインストールします。
dotnet add package Microsoft.EntityFrameworkCore.Design
これにより、プロジェクトディレクトリのコマンドラインでdotnet ef *が有効になります。
プロジェクトディレクトリのコマンドラインでdotnet ef *コマンドを有効にします。
dotnet ef migrations add Initial
dotnet ef database update Initial
dotnet ef dbcontext scaffold
これは、.NET Core 1.0から.NET Core 1.1+または2.xに切り替える際の一般的な問題です。
それを修正するには、以下を行う必要があります。
project.json
(.NET Core 1.0の場合)または<projectName>.csproj
(.NET Core 1.1+および2.xの場合)プロジェクト構成ファイル内に、このパッケージへの参照を手動で追加します。具体的には、.NET Core 1.0プロジェクトの場合、これを追加します。
"tools": {
"Microsoft.EntityFrameworkCore.Tools": "1.0.0"
"Microsoft.EntityFrameworkCore.Tools.DotNet": "1.0.0"
}
.NET Core 1.1+および.NET Core 2.xプロジェクトの場合、これを追加します。
<ItemGroup>
<DotNetCliToolReference
Include="Microsoft.EntityFrameworkCore.Tools"
Version="2.0.0" />
<DotNetCliToolReference
Include="Microsoft.EntityFrameworkCore.Tools.DotNet"
Version="2.0.0" />
</ItemGroup>
tools
jsonキーまたは1つ以上の既存のDotNetCliToolReference
要素を持つ<ItemGroup>
要素が既にある場合は、新しい要素を既存のグループに追加するだけです。
重要:上記の手順を実行する以外に、プロジェクトルートフォルダー(プロジェクトファイルを含むフォルダー)内でdotnet ef
コマンドを起動する必要があります。そうしないと機能しません。 。
追加情報と問題の詳細な説明については、 私のブログ投稿 をご覧ください。
問題の正確な解決策を見つけたと思います-dotnet:コマンド「dotnet-ef」に一致する実行可能ファイルが見つかりません「..
私はVS 2017 versio 15.5.3でドットネットコア2.0を使用しています
このエラーの原因
このエラーは、Nugetがを見つけることができないためソリューションファイルの場所。
解決策:-「Startup.cs」クラスがあるディレクトリに移動します
rootに移動しましたcommandをPackage Manager Console。
cd。\ School1
ここで、「School1」はプロジェクトの私のルートディレクトリであり、「Startup.cs」クラスが含まれています。これはあなたの場合は異なります。
dotnet ef
をPackage Manager Consoleで実行します。これは正常に実行されます。明確な理解のための写真の例
仲間のDot Net開発者に役立つことを願っています。
Microsoft.EntityFrameworkCore.Tools .DotNetを追加する必要がありました。 project.jsonファイルのツールセクションは次のようになります。
"tools": {
"Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.1.0-preview4-final",
"Microsoft.AspNetCore.Razor.Tools": "1.1.0-preview4-final",
"Microsoft.EntityFrameworkCore.Tools":"1.1.0-preview4-final",
"Microsoft.EntityFrameworkCore.Tools.DotNet": "1.1.0-preview4-final"
},
この問題が発生し、CLIツールでasp.netコアを実行した場合、xx.csprojファイルに<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0" />
とdotnet restore
を追加することで解決できます。その後、dotnet efコマンドを使用できます。
VS Package Managerコンソールタイプで別のコンソールウィンドウを開く代わりに、次のコマンドを実行します。
移行を追加
Add-Migration <migration name>
最後の移行を削除
Remove-Migration
移行が適用される前(または移行を適用するため):
Update-Database
移行が適用された場合:
Update-Database -Migration <previous migration> -Context <db context name>
HTH
EDIT:MVCコアプロジェクトに次のクラスも必要になる場合があります。
public class DbContextFactory : IDesignTimeDbContextFactory<NotesContext>
{
public YourDbContext CreateDbContext(string[] args)
{
var builder = new DbContextOptionsBuilder<YourDbContext>();
builder.UseSqlServer("DefaultConnection", optionsBuilder => optionsBuilder.MigrationsAssembly(typeof(YourDbContext).GetTypeInfo().Assembly.GetName().Name));
return new YourDbContext(builder.Options);
}
}
デフォルトでは、NuGet Pkgを追加するときにPackageReferenceとして追加されますが、これは間違っているため、手動で編集します
1- .csprojファイルの編集
2-「PackageReference」からの変更:
<ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="2.1.1"/>
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.3"/>
</ItemGroup>
to:
<ItemGroup>
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools" Version="2.1.1"/>
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.3"/>
</ItemGroup>
Visual Studio 2017では、パッケージマネージャーコンソールからこれらのコマンドを実行する必要がありました
install-package Microsoft.EntityFrameworkCore.SqlServer.Design
Scaffold-DbContext "Server=.\sqlexpress;Database=MyDb;Trusted_Connection=True;MultipleActiveResultSets=true" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Model -Context "MyApp"
ツールセクションで以下のコードを追加し、
"tools": {
"Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final",
"Microsoft.EntityFrameworkCore.Tools.DotNet": "1.0.0-preview2-final",
"Microsoft.AspNetCore.Server.IISIntegration.Tools": {
"version": "1.0.0-preview2-final",
"imports": "portable-net45+win8+dnxcore50"
}
}
この形式のコードでエラーが解決しました。