迁移问题
新建一个webapi项目,然后安装EFCore类库,以及ERCore.SqlServer类库,像使用ASP.NET 4.x一样采用DBFirst模式,创建ADO.NET实体数据模型。步骤没有错,可此时VS2022提示“项目的目标框架不包含实体框架运行时程序集。请查看项目属性页中的目标框架信息”,出现这个弹窗提示,我基本已经知道,EF里可以使用的“ADO.NET实体数据模型”,在EFCore中已经不能使用。鉴于巨硬一贯的风格,肯定是搞出了一套全新的工具,那就去官网查查,果然新工具出现在“ EFCore 》管理数据库架构 》反向工程 ”里。
解决方案
反向工程是基于数据库架构搭建实体类型类和 DbContext 类基架的过程。 可使用 EF Core 包管理器控制台 (PMC) 工具的 Scaffold-DbContext 命令或 .NET 命令行接口 (CLI) 工具的 dotnet ef dbcontext scaffold 命令执行这一过程。
要使用反向工程必须满足以下条件:
1)在进行反向工程之前,需要安装 PMC 工具(仅限 Visual Studio)或 CLI 工具。
2)在要搭建基架的项目中安装 Microsoft.EntityFrameworkCore.Design 的 NuGet 包。
3)还需要为要进行反向工程的数据库架构安装适当的数据库提供程序。
反向操作执行命令,分为两种类型
.NET Core CLI:dotnet ef dbcontext scaffold "Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=Chinook" Microsoft.EntityFrameworkCore.SqlServer
Visual Studio:Scaffold-DbContext 'Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=Chinook' Microsoft.EntityFrameworkCore.SqlServer
操作流程
经过上述迁移问题和解决方案的分析学习,就可以动手实际操作一下了。
1.采用“ADO.NET实体数据模型”向导生成ORM模型和错误提示
2.采用全新的命令行式工具
注意事项:
1)注意解决方案里,启动项目已从“jks.core.test.databases”切换成“jks.core.test.databases.entities”
2)注意程序包管理器控制台,默认项目已从“jks.core.test.databases”切换成“jks.core.test.databases.entities”
3)PM>命令行,主要构成是 Scaffold-DbContext '数据库连接字符串' Microsoft.EntityFramworkCore.SqlServer。还可以添加其他参数,请自信查阅官方文档。
4)要使用反向工程生成ORM映射对象,上图中jks.core.test.databases.entities项目需要安装以下程序集
a)Microsoft.EntityFrameworkCore
b)Microsoft.EntityFrameworkCore.Design
c)Microsoft.EntityFrameworkCore.SqlServer
d)Microsoft.EntityFrameworkCore.Tools
5)为什么要把反向工程产物输出到独立的项目?因为这些依靠工具自动生成的程序文件代码,最好不要改动,官网也给出了警告说:“如果从数据库中再次对模型进行反向工程,则对这些文件所做的任何更改都将丢失”。做大型项目肯定采用DBFirst模式,依据实际业务需求增删改数据表结构是不可避免之事,因此为了确保这些自动生成代码与数据表的一致性,故而将它们单独放在一个项目中管理。
6)EF还提供了其他作用的程序集,具体功能的使用可以自行研究。
总结
毕竟要实现跨平台,改变是不可避免的,看过自动生成的代码,确实要比上一代EF生成的代码更简洁、清晰。只是对于养成使用图形化向导的程序员来说,命令行式操作工具不够方便。总之,新式ORM工具是非常不错的。
标签:core,映射,2core,工具,EntityFrameworkCore,反向,EFCore,NET,Microsoft From: https://www.cnblogs.com/Jkinbor/p/16771107.html