EF Code First
===代码优先====
在vs中的“程序包管理器控制台”中输入如下两个命令,也可以在项目所在文件夹中打开命令行工具进行操作
命令一共有5种,每个有两种写法:
dotnet ef migrations add initialCreate || Add-Migrantion (执行此命令项目生成一个目录(Migrations))
dotnet ef database update || Update-Database (把当前的Migrations更新到数据库中)
dotnet ef migrations remove || Remove-Migration (删除一个最新的Migrations,降级,根据数据库表结构删除migrations文件夹下面多余的文件)
dotnet ef database update LastGoodMigration || Update-Database LastGoodMigration(指定一个Migrations更新 LastGoodMigration 指定的migration名称)
dotnet ef migrations script || Script-Migration (将更新内容生成sql脚本语句)
===数据库优先===
https://docs.microsoft.com/en-us/ef/core/miscellaneous/cli/powershell
https://docs.microsoft.com/zh-cn/ef/core/managing-schemas/scaffolding?tabs=dotnet-core-cli
例子
Scaffold-DbContext -Connection "Server=.;Database=EFCoreDemo;uid=sa;pwd=123" Microsoft.EntityFrameworkCore.SqlServer -OutputDir "Models"
Scaffold-DbContext -Connection "Server=****;Database=GZNETCore.Developer;uid=garson;pwd=***" Microsoft.EntityFrameworkCore.SqlServer -OutputDir "Tables" -UseDatabaseNames -Force -DataAnnotations -Context "_EntitiesContext" -Project "GZImageSearch.Model" -StartupProject "GZImageSearch.Model"
指令详细介绍:
Scaffold-DbContext [-Connection] <String> [-Provider] <String> [-OutputDir <String>] [-Context <String>]
[-Schemas <String>] [-Tables <String>] [-DataAnnotations] [ -Force] [-Project <String>]
[-StartupProject <String>] [-Environment <String>] [<CommonParameters>]
参数 PARAMETERS
-Connection <String> | 指定数据库的连接字符串。 |
-Provider <String> | 指定要使用的提供程序。例如,Microsoft.EntityFrameworkCore.SqlServer。 |
-OutputDir <String> | 指定用于输出类的目录。如果省略,则使用顶级项目目录。 |
-Context <String> | 指定生成的DbContext类的名称。 |
-Schemas <String> | 指定要为其生成类的模式。 |
-Tables <String> | 指定要为其生成类的表。 |
-DataAnnotations [<SwitchParameter>] | 使用DataAnnotation属性在可能的情况下配置模型。如果省略,输出代码将仅使用流畅的API。 |
-Force [<SwitchParameter>] | 强制脚手架覆盖现有文件。否则,只有在没有输出文件被覆盖的情况下,代码才会继续。 |
-Project <String> | 指定要使用的项目。如果省略,则使用默认项目。 |
-StartupProject <String> | 指定要使用的启动项目。如果省略,则使用解决方案的启动项目。 |
-Environment <String> | 指定要使用的环境。如果省略,则使用“开发”。 |
启用密钥存储
机密管理器工具对存储在用户配置文件中的特定于项目的配置设置进行操作。
机密管理器工具 init 在 .NET Core SDK 3.0.100 或更高版本中包含命令。 若要使用用户机密,请在项目目录中运行以下命令:
来自 < https://docs.microsoft.com/zh-cn/aspnet/core/security/app-secrets?view=aspnetcore-3.1#secret-manager >
dotnet user-secrets init
连接字符串
该命令的第一个参数是指向数据库的连接字符串。 工具将使用此连接字符串来读取数据库架构。
引号和转义连接字符串的方式取决于您使用哪个 shell 执行命令。 有关详细信息,请参阅 shell 的文档。 例如,PowerShell 要求转义 $ 字符,而不是 \ 。
来自 < https://docs.microsoft.com/zh-cn/ef/core/managing-schemas/scaffolding?tabs=dotnet-core-cli >
配置和用户机密
如果有 ASP.NET Core 项目,则可以使用 Name=<connection-string> 语法从配置中读取连接字符串。
这很适合用于 机密管理器工具 ,使数据库密码与代码库保持分离。
.NET Core CLI复制
dotnet user-secrets set ConnectionStrings.Chinook "Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=Chinook"
dotnet ef dbcontext scaffold Name=ConnectionStrings.Chinook Microsoft.EntityFrameworkCore.SqlServer
来自 < https://docs.microsoft.com/zh-cn/ef/core/managing-schemas/scaffolding?tabs=vs >