• EF Core .NET 命令行工具集
    • 安装工具集
    • 使用工具集
    • 命令
      • dotnet ef database drop
      • dotnet ef database update
      • dotnet ef dbcontext info
      • dotnet ef dbcontext list
      • dotnet ef dbcontext scaffold
      • dotnet ef migrations add
      • dotnet ef migrations list
      • dotnet ef migrations remove
      • dotnet ef migrations script

    EF Core .NET 命令行工具集

    Entity Framework Core .NET 命令行工具集是跨平台 dotnet 命令的扩展。后者是 .NET Core SDK 的一部分。

    提示

    如果你正在使用 Visual Studio,我们建议你使用 PMC 工具集,因为它提供了更加完整的体验。

    安装工具集

    使用以下步骤可以安装 EF Core .NET 命令行工具集:

    1. 编辑项目文件,将 Microsoft.EntityFrameworkCore.Tools.DotNet 作为 DotNetCliToolReference 项目添加到其中(如下所示)。

    2. 在命令提示符下运行以下命令。

    1. dotnet add package Microsoft.EntityFrameworkCore.Design
    2. dotnet restore

    最终的项目文件看起来应该是这样的:

    1. <Project Sdk="Microsoft.NET.Sdk">
    2. <PropertyGroup>
    3. <OutputType>Exe</OutputType>
    4. <TargetFramework>netcoreapp2.0</TargetFramework>
    5. </PropertyGroup>
    6. <ItemGroup>
    7. <PackageReference Include="Microsoft.EntityFrameworkCore.Design"
    8. Version="2.0.0"
    9. PrivateAssets="All" />
    10. </ItemGroup>
    11. <ItemGroup>
    12. <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet"
    13. Version="2.0.0" />
    14. </ItemGroup>
    15. </Project>

    注意

    带有 PrivateAssets="All" 的程序包引用意味着它不会被暴露到引用当前项目的其他项目中。这对于通常只在开发时使用的程序包来说尤为有用。

    正常情况下,应该能够在命令提示符下成功运行以下命令了。

    1. 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 为涉及到的迁移生成一个可以在数据库上使用的脚本。