首页 > 其他分享 >[2core]EFCore对象关系映射

[2core]EFCore对象关系映射

时间:2022-10-09 09:55:40浏览次数:54  
标签:core 映射 2core 工具 EntityFrameworkCore 反向 EFCore NET Microsoft

迁移问题

新建一个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

相关文章

  • NET添加数据映射的两种方式(手动Controller和自动AutoMapper)
    手动添加映射在Controllers目录下找到所需要添加映射的xxxcontroller.cs文件,然后手动添加数据的映射:usingSystem;usingSystem.Linq;usingAutoMapper;usingMic......
  • 没有公网ip,如何在路由器中端口映射?
    路由器端口映射的前提是需要有公网IP,在没有公网IP情况下做端口映射也是无效的。其实路由器做端口映射,其主要作用就是让公网用户可以访问到内网中的服务器。而普遍情况下,路由......
  • 映射匹配兼容
                         ......
  • 3、spring+mybatis关联映射(无mapper实现类)+idea+maven
    该工程采用spring+mybatis的关联映射,动态sql,sql片段实现1、搭建项目结构如下  2、配置项目的pom.xml文件中的依赖1<?xmlversion="1.0"encoding="UTF-8"?>23<proj......
  • 对于Servlet原理以及Mapping的五种映射和404页面的详解
    一.Servlet原理1,浏览器向web容器发送Http请求,我们这里用的web容器为tomcat。2.我们在Servlet里的protectedvoiddoGet(HttpServletRequestreq,HttpServletResponsere......
  • 内存映射IO(MMIO)
    端口I/O介绍:一种I/O编址方式是端口映射I/O(port-mappedI/O),CPU使用专门的I/O指令对设备进行访问,并把设备的地址称作端口号. 在执行其中的一条指令时,CPU使用地址总......
  • 字段名和属性名不一致的情况,如何处理映射关系?
    注意:使用1和2方式的前提是字段名和实体类中的属性名不一致,但是字段名符合数据库的规则(使用_),实体类中的属性名符合Java的规则(使用驼峰)。1、可以通过为字段起别名的方式,保......
  • 自定义映射resultMap
    resultMap处理字段和属性的映射关系如果字段名与实体类中的属性名不一致,该如何处理映射关系?第一种方法:为查询的字段设置别名,和属性名保持一致下面是实体类中的属性名:......
  • Rest映射原理
    查看WebMvcAutoConfiguration,默认配置了OrderedHiddenHttpMethodFilter@Configuration(proxyBeanMethods=false)@ConditionalOnWebApplication(type=Type.SERVLET)@Cond......
  • MyBatis加载Mapper映射文件的方式
    MyBatis加载Mapper的映射文件的方式我们都知道MyBatis是一款半自动的ORM框架,它的特点就是具有灵活的sql操作MyBatis是利用mapper的映射文件,来将数据库的中字段与Java的属性......