This is the new way since mid 2018
You have to install dotnet-aspnet-codegenerator.
This is now done globally and not through a Nuget package:
PowerShell:
dotnet tool install --global dotnet-aspnet-codegenerator
Then this is how you create a REST-Controller from an existing EF Model in PowerShell:
dotnet-aspnet-codegenerator -p "C:\MyProject\MyProject.csproj" controller -name MyDemoModelController -api -m My.Namespace.Models.MyDemoModel -dc MyDemoDbContext -outDir Controllers -namespace My.Namespace.Controllers
Some helpful calls
Show available generators (-p... -h
):
dotnet-aspnet-codegenerator -p "C:\MyProject\MyProject.csproj" -h
Show available options of the “controller” generator (-p... controller -h
):
dotnet-aspnet-codegenerator -p "C:\MyProject\MyProject.csproj" controller -h
Generate controllers for many models in a loop
This is how you would generate REST controllers for all models in a given path from a PowerShell:
Get-ChildItem "C:\MyProject\Models" -Filter *.cs |
Foreach-Object {
$scaffoldCmd =
'dotnet-aspnet-codegenerator ' +
'-p "C:\MyProject\MyProject.csproj" ' +
'controller ' +
'-name ' + $_.BaseName + 'Controller ' +
'-api ' +
'-m My.Namespace.Models.' + $_.BaseName + ' ' +
'-dc MyDemoDbContext ' +
'-outDir Controllers ' +
'-namespace My.Namespace.Controllers'
# List commands for testing:
$scaffoldCmd
# Excute commands (uncomment this line):
#iex $scaffoldCmd
}