|
I am annoyed as fck there is no point-and-click UI to do this; |
|
Hence these notes as a reminder; |
|
|
|
FIRST INSTALL via NuGet in YOUR project (NB: you may have multiple projects in the solution!) |
|
a) 'Microsoft.EntityFrameworkCore'; |
|
b) 'Microsoft.EntityFrameworkCore.SqlServer'; choose the PROVIDER you want to use in the Scaffold-DbContext command. |
|
c) 'Microsoft.EntityFrameworkCore.Tools'; this is so you can 'scaffold', i.e. generate code automatically; only fools will do the hard-work of writing by hand! |
|
|
|
-- |
|
Above uses Visual Studio UI; |
|
ALTERNATIVELY, you can use |
|
(i)PM Console: |
|
|
|
Install-Package Microsoft.EntityFrameworkCore |
|
Install-Package Microsoft.EntityFrameworkCore.SqlServer |
|
Install-Package Microsoft.EntityFrameworkCore.Tools |
|
|
|
or, |
|
(ii) cmd line: |
|
|
|
dotnet add package Microsoft.EntityFrameworkCore |
|
dotnet add package Microsoft.EntityFrameworkCore.SqlServer |
|
dotnet add package Microsoft.EntityFrameworkCore.Tools |
|
|
|
++++++++ |
|
0) Open the (Nuget) package manager console: Tools /NuGet PM / PM Console |
|
|
|
1) **EXAMPLE**: (all on one line) |
|
Scaffold-DbContext "Server=MyServerName\SQLExpress;Database=MyProjDB;User Id=dev_user1;Password=dev_user1;MultipleActiveResultSets=true;" Microsoft.EntityFrameworkCore.SqlServer |
|
-Namespace "WebApi.ModelTemp" -Context "EntitiesCtx" -DataAnnotations -OutputDir ModelTemp -StartupProject ProjName |
|
|
|
(ProjName is ProjName.cs without the .cs extension). |
|
|
|
-DataAnnotations creates classes with Attributes; (the classic style of .NET Fx v4.x |
|
if this is ommitted, it will use the Fluid API style, which I think is total crap, because you cannot see at a glance field properties; |
|
e.g. field-sizes (specially max string lengths), PK's, FK's (you will have to go hunt around for that info, pathetic really to the clever smartarse who devised this Fluid BS) |
|
|
|
-Namespace is used, because by default it uses the project name (in my case, my Proj name had underscores, e.g. My-Project-WebApi.prj; |
|
So the scaffolding cmd tries to create a namespace as My-Project-WebApi.ModelTemp WHICH IS illegal/not valid ! |
|
|
|
-Context is used so I can control the dbCtx object name, I don't want it to follow MyDatabaseNameDB -> MyDatabaseNameDBContext |
|
|
|
-- |
|
ALTERNATIVE, on cmd-line: |
|
dotnet ef dbcontext scaffold "YourConnectionString" Microsoft.EntityFrameworkCore.SqlServer -o Models |
|
|
|
|
|
2) For help, see the next command; |
|
In general, type 'get-help NuGet' to see all available NuGet commands (where NuGet is the Powershell NuGet module) |
|
|
|
PM> get-help scaffold-dbcontext –detailed |
|
Do you want to run Update-Help? |
|
The Update-Help cmdlet downloads the most current Help files for Windows PowerShell modules, and installs them on your computer. For more information about the Update-Help cmdlet, see https:/go.microsoft.com/fwlink/?LinkId=210614. |
|
[Y] Yes [N] No [S] Suspend [?] Help (default is "Y"):y |
|
|
|
NAME |
|
Scaffold-DbContext |
|
|
|
SYNOPSIS |
|
Scaffolds a DbContext and entity types for a database. |
|
|
|
|
|
SYNTAX |
|
Scaffold-DbContext [-Connection] <String> [-Provider] <String> [-OutputDir <String>] [-ContextDir <String>] [-Context <String>] [-Schemas |
|
<String[]>] [-Tables <String[]>] [-DataAnnotations] [-UseDatabaseNames] [-Force] [-NoOnConfiguring] [-Project <String>] [-StartupProject |
|
<String>] [-Namespace <String>] [-ContextNamespace <String>] [-NoPluralize] [-Args <String>] [<CommonParameters>] |
|
|
|
|
|
DESCRIPTION |
|
Scaffolds a DbContext and entity types for a database. |
|
|
|
|
|
PARAMETERS |
|
-Connection <String> |
|
The connection string to the database. |
|
|
|
-Provider <String> |
|
The provider to use. (E.g. Microsoft.EntityFrameworkCore.SqlServer) |
|
|
|
-OutputDir <String> |
|
The directory to put files in. Paths are relative to the project directory. |
|
|
|
-ContextDir <String> |
|
The directory to put the DbContext file in. Paths are relative to the project directory. |
|
|
|
-Context <String> |
|
The name of the DbContext. Defaults to the database name. |
|
|
|
-Schemas <String[]> |
|
The schemas of tables to generate entity types for. |
|
|
|
-Tables <String[]> |
|
The tables to generate entity types for. |
|
|
|
-DataAnnotations [<SwitchParameter>] |
|
Use attributes to configure the model (where possible). If omitted, only the fluent API is used. |
|
|
|
-UseDatabaseNames [<SwitchParameter>] |
|
Use table and column names directly from the database. |
|
|
|
-Force [<SwitchParameter>] |
|
Overwrite existing files. |
|
|
|
-NoOnConfiguring [<SwitchParameter>] |
|
Don't generate DbContext.OnConfiguring. |
|
|
|
-Project <String> |
|
The project to use. |
|
|
|
-StartupProject <String> |
|
The startup project to use. Defaults to the solution's startup project. |
|
|
|
-Namespace <String> |
|
The namespace to use. Matches the directory by default. |
|
|
|
-ContextNamespace <String> |
|
The namespace of the DbContext class. Matches the directory by default. |
|
|
|
-NoPluralize [<SwitchParameter>] |
|
Don't use the pluralizer. |
|
|
|
-Args <String> |
|
Arguments passed to the application. |
|
|
|
<CommonParameters> |
|
This cmdlet supports the common parameters: Verbose, Debug, |
|
ErrorAction, ErrorVariable, WarningAction, WarningVariable, |
|
OutBuffer, PipelineVariable, and OutVariable. For more information, see |
|
about_CommonParameters (https:/go.microsoft.com/fwlink/?LinkID=113216). |
|
|
|
REMARKS |
|
To see the examples, type: "get-help Scaffold-DbContext -examples". |
|
For more information, type: "get-help Scaffold-DbContext -detailed". |
|
For technical information, type: "get-help Scaffold-DbContext -full". |
|
For online help, type: "get-help Scaffold-DbContext -online" |
|
|
|
|
|
PM> |
|
|
|
+++++++++++++ |