700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Entity Framework Core -.NET Core CLI 详细讲解

Entity Framework Core -.NET Core CLI 详细讲解

时间:2021-11-03 03:42:13

相关推荐

Entity Framework Core -.NET Core CLI 详细讲解

NET Core CLI 简介

NET Core CLI:命令行界面工具,我们可以使用这个命令行工具去实现基于现有数据库的数据迁移,数据模型生成和应用的迁移

命令是跨平台 dotnet 命令的扩展,它是 .NET Core SDK的一部分

安装工具

dotnet ef 可以安装为全局或本地工具

dotnet tool install --global dotnet-ef

使用以下命令更新工具

dotnet tool update --global dotnet-ef

验证安装:运行以下命令以验证是否正确安装了 EF Core CLI 工具

dotnet ef

使用工具

第一步我们需要创建一个解决方案,然后创建一个控制台程序,当然我们也可以创建web程序,看个人喜好,我习惯使用控制台程序进行测试

然后找到对应的文件夹路径

使用cmd命令打开命令行程序

首先验证CLI是否安装成功

如果没有出现这个画面,请检查是否进行过安装命令的执行

目标项目和启动项目

命令引用项目和启动项目。

该项目也称为目标项目,因为它是命令在其中添加或删除文件的位置。 默认情况下,当前目录中的项目是目标项目。 可以使用选项指定其他项目作为目标项目 --project 。启动项目是工具生成和运行的项目。 这些工具必须在设计时执行应用程序代码,以获取有关项目的信息,例如数据库连接字符串和模型的配置。 默认情况下,当前目录中的项目是启动项目。 您可以使用选项指定其他项目作为启动项目 --startup-project 。

启动项目和目标项目通常是同一个项目。 它们是不同的项目的典型方案是:

EF Core 的上下文和实体类位于 .NET Core 类库中。.NET Core 控制台应用程序或 web 应用程序引用类库。

还可以 将迁移代码放在与 EF Core 上下文分离的类库中。

其他目标框架

CLI 工具适用于 .NET Core 项目和 .NET Framework 项目。 .NET Standard 类库中具有 EF Core 模型的应用可能没有 .NET Core 或 .NET Framework 项目。 例如,这适用于 Xamarin 和通用 Windows 平台应用。 在这种情况下,你可以创建一个仅供其使用的 .NET Core 控制台应用项目,作为工具的启动项目。 项目可以是不包含实际代码的虚拟项目, — 只需为工具提供目标。

为什么需要虚拟项目? 如前文所述,这些工具必须在设计时执行应用程序代码。 为此,需要使用 .NET Core 运行时。 当 EF Core 模型位于面向 .NET Core 或 .NET Framework 的项目中时,EF Core 工具会借用项目中的运行时。 如果 EF Core 模型在 .NET Standard 类库中,则无法执行此操作。 .NET Standard 不是实际的 .NET 实现;它是 .NET 实现所必须支持的一组 Api 的规范。 因此 .NET Standard 不足以执行应用程序代码 EF Core 工具。 你创建的用于启动项目的虚拟项目提供了一个具体的目标平台,工具可在其中加载 .NET Standard 类库。

常用选项

dotnet ef database drop---删除数据库。

选项:

dotnet ef database update --将数据库更新到上次迁移或指定迁移

示例:

dotnet ef database update InitialCreatedotnet ef database update 0904195021_InitialCreate --connection your_connection_string

第一行是针对迁移的名称进行修改数据库

第二行是指定迁移的Id和数据的连接字符串进行修改数据库

dotnet ef dbcontext info 获取数据库上下文的信息

dotnet ef dbcontext scaffold 为 DbContext 数据库的和实体类型生成代码,为了使此命令生成实体类型,数据库表必须具有主键。

示例:将通过数据库连接生成模型并将所有生成的文件放到相对目录的文件夹下面

dotnet ef dbcontext scaffold "Server=(localdb)\mssqllocaldb;Database=Blogging;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -o Models

示例:设定指定的表,并在具有指定名称和命名空间的单独文件夹中创建上下文

dotnet ef dbcontext scaffold "Server=(localdb)\mssqllocaldb;Database=Blogging;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -o Models -t Blog -t Post --context-dir Context -c BlogContext --context-namespace New.Namespace

下面的示例使用 机密管理器工具从项目的配置集读取连接字符串。

dotnet user-secrets set ConnectionStrings:Blogging "Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=Blogging"dotnet ef dbcontext scaffold Name=ConnectionStrings:Blogging Microsoft.EntityFrameworkCore.SqlServer

下面的示例跳过方法的基架 OnConfiguring 。 如果要在类的外部配置 DbContext,这会很有用。 例如, Core 应用通常在 Startup.ConfigureServices 中对其进行配置。 在 EF Core 5.0 中添加。

dotnet ef dbcontext scaffold "Server=(localdb)\mssqllocaldb;Database=Blogging;User Id=myUsername;Password=myPassword;" Microsoft.EntityFrameworkCore.SqlServer --no-onconfiguring

dotnet ef dbcontext script 从 DbContext 生成 SQL 脚本。 绕过任何迁移。 在 EF Core 3.0 中添加。

dotnet ef migrations add 添加新的迁移。

dotnet ef migrations list 列出可用迁移

dotnet ef migrations remove 删除上一次迁移,回滚针对最新迁移所做的代码更改

dotnet ef migrations script 从迁移生成 SQL 脚本

以下示例创建用于 InitialCreate 迁移的脚本

dotnet ef migrations script 0 InitialCreate

以下示例在 InitialCreate 迁移之后为所有迁移创建一个脚本

dotnet ef migrations script 0904195021_InitialCreate

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。