I want to create a console application with EF Core by following this tutorial: http://ef.readthedocs.io/en/latest/platforms/full-dotnet/new-db.html.
My problem is, I cannot execute the statement
Add-Migration
as described in the tutorials. It shows me:
PM> Add-Migration MyFirstMigration
Cannot execute this command because 'Microsoft.EntityFrameworkCore.Tools' is not installed in project 'src\AppEf'. Add 'Microsoft.EntityFrameworkCore.Tools' to the 'tools' section in project.json. See http://go.microsoft.com/fwlink/?LinkId=798221 for more details.
All added assemblies:
![](https://www.manongdao.com/static/images/pcload.jpg)
What is wrong?
Update
The statement dotnet restore
works and dotnet-ef --help
does not work at all.
![](https://www.manongdao.com/static/images/pcload.jpg)
And you can see, the statement is execute in project folder.
As a few people mentioned in the comments, Microsoft.EntityFrameworkCore.Tools
needs to be added to the tools
section of project.json.
I've tested this project.json with the latest (July 2016) versions of EF Core and the tooling packages, and it works:
{
"buildOptions": {
"emitEntryPoint": true
},
"dependencies": {
"Microsoft.EntityFrameworkCore.SqlServer": "1.0.0",
"Microsoft.EntityFrameworkCore.Design": {
"version": "1.0.0-preview2-final",
"type": "build"
},
"Microsoft.NETCore.App": {
"type": "platform",
"version": "1.0.0"
}
},
"frameworks": {
"netcoreapp1.0": {}
},
"tools": {
"Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final"
},
"version": "1.0.0-*"
}
To use it, execute these commands from inside the project folder:
λ dotnet restore
log : Restore completed in 2810ms.
λ dotnet ef --help
Compiling EfCoreTester2 for .NETCoreApp,Version=v1.0
Compilation succeeded.
0 Warning(s)
0 Error(s)
Time elapsed 00:00:01.7208394
Entity Framework .NET Core CLI Commands 1.0.0-preview2-21431
Usage: dotnet ef [options] [command]
Options:
-h|--help Show help information
-v|--verbose Enable verbose output
--version Show version information
(... etc)
At first, I was getting No executable found matching command "dotnet-ef"
until I realized that you have to execute the commands from inside the project folder (src\projectName
in my case). If you try to do it from the solution root directory, it won't work.
I ended up with such package configuration
"dependencies": {
"Microsoft.NETCore.App": {
"version": "1.0.1",
"type": "platform"
},
"Microsoft.EntityFrameworkCore.Design": "1.0.1",
"Microsoft.EntityFrameworkCore.SqlServer.Design": "1.0.1",
...
}
"tools": {
"Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview3-final",
"Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview3-final"
},
and this command works
Scaffold-DbContext
"Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=<DB name>;Integrated Security=True;"
"Microsoft.EntityFrameworkCore.SqlServer"
-OutputDir Entities
-Context "ApplicationDbContext"
-DataAnnotations
-Force
-Project <Project name>.Data
-StartupProject <Project name>.Api
Here I scaffold a context into a separate class library project with name Data
where the web app is Api