1.10.2 EF Core .NET 命令行工具集
Entity Framework Core .NET 命令行工具集是跨平台 dotnet 命令的扩展。后者是 .NET Core SDK 的一部分。
提示
如果你正在使用 Visual Studio,我们建议你使用 PMC 工具集,因为它提供了更加完整的体验。
安装工具集
使用以下步骤可以安装 EF Core .NET 命令行工具集:
编辑项目文件,将 Microsoft.EntityFrameworkCore.Tools.DotNet 作为 DotNetCliToolReference 项目添加到其中(如下所示)。
在命令提示符下运行以下命令。
dotnet add package Microsoft.EntityFrameworkCore.Design
dotnet restore
最终的项目文件看起来应该是这样的:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp2.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore.Design"
Version="2.0.0"
PrivateAssets="All" />
</ItemGroup>
<ItemGroup>
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet"
Version="2.0.0" />
</ItemGroup>
</Project>
注意
带有
PrivateAssets="All"
的程序包引用意味着它不会被暴露到引用当前项目的其他项目中。这对于通常只在开发时使用的程序包来说尤为有用。
正常情况下,应该能够在命令提示符下成功运行以下命令了。
dotnet ef
使用工具集
任何时候只要调用命令,都会牵涉到两个项目:
目标项目是任何文件添加到的地方(一些情况是移除文件)。默认情况下目标项目就是当前目录下的项目,但是可以使用 -project 参数来临时指定另一个项目。
启动项目是执行项目代码时由工具模拟的,同样,默认情况下启动项目也是当前目录下的项目,但是可以使用 -startup-project 参数来临时指定另一个项目。
通用的参数:
--json | 显示 json 输出 | |
-c | --context <DBCONTEXT> | 使用的 DbContext |
-p | --project <PROJECT> | 使用的项目 |
-s | --startup-project <PROJECT> | 使用的启动项目 |
--framework <FRAMEWORK> | 目标框架 | |
--configuration <CONFIGURATION> | 使用的配置 | |
--runtime <IDENTIFIER> | 使用的运行时 | |
-h | --help | 显示帮助信息 |
-v | --Verbose | 显式详细输出 |
--no-color | 单色输出 | |
--prefix-output | 输出时添加等级前缀 |
提示
在运行前设置 env:ASPNETCORE_ENVIRONMENT 可以指定 ASP.NET Core 环境。
命令
dotnet ef database drop
删除数据库。
选项:
-f | --force | 跳过确认 |
--dry-run | 显式将要删除的数据库,但还不会删除它 |
dotnet ef database update
将数据库更新到指定的迁移。
参数:
<MIGRATION> | 更新到的迁移。0 表示将遍历所有迁移。默认为最近一个迁移。 |
dotnet ef dbcontext info
获取 DbContext 类型的信息。
dotnet ef dbcontext list
列出可用的 DbContext 类型。
dotnet ef dbcontext scaffold
为数据库搭建 DbContext 和实体类型的基架。
参数:
<CONNECTION> | 数据库的连接字符串 |
<PROVIDER> | 使用的提供程序。(比如 Microsoft.EntityFrameworkCore.SqlServer) |
选项:
-d | --data-annotations | 生成的模型尽可能使用特性(数据注解)配置。缺省时仅生成流式 API 配置代码。 |
-c | --context <NAME> | 生成 DbContext 的名称。 |
-f | --force | 覆盖已有的文件。 |
-o | --output-dir <PATH> | 放置基架文件的目录。路径是相对于项目目录的。 |
--schema <SCHEMA_NAME> ... | 仅生成指定数据库模式中的表对应的实体类型。 | |
-t | --table <TABLE_NAME> ... | 仅生成指定数据表对应的实体类型。 |
--use-database-names | 直接使用数据库中的表名和列名生成相关名称。 |
dotnet ef migrations add
添加新的迁移。
参数:
<NAME> | 迁移的名称 |
选项:
-o | --output-dir <PATH> | 使用的目录(及其子名称空间)。路径是相对于项目目录的。默认是 “Migrations”。 |
dotnet ef migrations list
列出可用的迁移。
dotnet ef migrations remove
移除最近一个迁移。
选项:
-f | --force | 移除迁移前通常需要验证其是否已经应用到了数据库。使用该参数可跳过验证。 |
dotnet ef migrations script
根据迁移(段)生成 SQL 脚本
参数:
<FROM> | 起始迁移。默认是 0(初始化数据库)。 |
TO | 结束迁移。默认是最近一个迁移。 |
选项:
-o | --output <FILE> | 脚本输出到的文件。 |
-i | --idempotent | 为涉及到的迁移生成一个可以在数据库上使用的脚本。 |