EF Core反向工程

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
云数据库 RDS PostgreSQL,高可用系列 2核4GB
简介: EF Core反向工程,数据库创建表使用命令生成上下文

数据库准备

在数据库新建一个库students,然后创建如下一个表,这里演示使用的是MySQL

CREATE TABLE `student` (
  `id` int NOT NULL,
  `class` varchar(255) DEFAULT NULL COMMENT '班级',
  `name` varchar(255) DEFAULT NULL COMMENT '姓名',
  `age` int DEFAULT NULL COMMENT '年龄',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

image.gif

image.gif

项目

新建一个空项目,安装如下三个nuget包

image.gif

打开终端,到当前项目路径下,输入如下命令

dotnet ef dbcontext scaffold "server=127.0.0.1;uid=root;pwd=123456;database=students" Pomelo.EntityFrameworkCore.MySql

项目中就会自动创建这两个类

image.gif

public partial class Student
    {
        public int Id { get; set; }
        /// <summary>
        /// 班级
        /// </summary>
        public string? Class { get; set; }
        /// <summary>
        /// 姓名
        /// </summary>
        public string? Name { get; set; }
        /// <summary>
        /// 年龄
        /// </summary>
        public int? Age { get; set; }
    }

image.gif

public partial class studentsContext : DbContext
    {
        public studentsContext()
        {
        }
        public studentsContext(DbContextOptions<studentsContext> options)
            : base(options)
        {
        }
        public virtual DbSet<Student> Students { get; set; } = null!;
        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            if (!optionsBuilder.IsConfigured)
            {
#warning To protect potentially sensitive information in your connection string, you should move it out of source code. You can avoid scaffolding the connection string by using the Name= syntax to read it from configuration - see https://go.microsoft.com/fwlink/?linkid=2131148. For more guidance on storing connection strings, see http://go.microsoft.com/fwlink/?LinkId=723263.
                optionsBuilder.UseMySql("server=127.0.0.1;uid=root;pwd=123456;database=students", Microsoft.EntityFrameworkCore.ServerVersion.Parse("8.0.33-mysql"));
            }
        }
        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            modelBuilder.UseCollation("utf8mb4_0900_ai_ci")
                .HasCharSet("utf8mb4");
            modelBuilder.Entity<Student>(entity =>
            {
                entity.ToTable("student");
                entity.Property(e => e.Id)
                    .ValueGeneratedNever()
                    .HasColumnName("id");
                entity.Property(e => e.Age)
                    .HasColumnName("age")
                    .HasComment("年龄");
                entity.Property(e => e.Class)
                    .HasMaxLength(255)
                    .HasColumnName("class")
                    .HasComment("班级");
                entity.Property(e => e.Name)
                    .HasMaxLength(255)
                    .HasColumnName("name")
                    .HasComment("姓名");
            });
            OnModelCreatingPartial(modelBuilder);
        }
        partial void OnModelCreatingPartial(ModelBuilder modelBuilder);
    }

image.gif

然后就可以查询数据库中的数据了

image.gif

在默认情况下,生成的类都是放根目录下的,所以还需要优化一下,在刚刚命令后面加上--context-dir 和--output-dir 来指定存放的文件夹

dotnet ef dbcontext scaffold "server=127.0.0.1;uid=root;pwd=123456;database=students" Pomelo.EntityFrameworkCore.MySql --context-dir Data --output-dir Entities

image.gif

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
目录
相关文章
|
网络协议 应用服务中间件 测试技术
Yarp 与 Nginx性能大比拼不出所料它胜利了!
Yarp 与 Nginx性能大比拼不出所料它胜利了!
354 0
|
小程序
小程序-uni-app:hbuildx uni-app 安装 uni-icons 及使用
小程序-uni-app:hbuildx uni-app 安装 uni-icons 及使用
1049 0
|
存储 Serverless 文件存储
函数计算产品使用问题之如何在一键部署的ComfyUI中上传大模型和插件
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
12月前
|
安全 搜索推荐 数据安全/隐私保护
点晴免费OA办公系统:高效协同,安全易用
信息技术发展推动企业信息化,即企业利用现代技术提升生产、经营、管理效率,增强竞争力。点晴免费OA系统作为信息化管理的基础,是实现企业信息化的关键手段。
227 2
|
JavaScript 前端开发 测试技术
[新手入门]todolist增删改查:vue3+ts版本!
【10月更文挑战第15天】[新手入门]todolist增删改查:vue3+ts版本!
|
SQL 缓存 开发框架
Entity Framework Plus: 让 EF Core 开发如虎添翼
Entity Framework Plus: 让 EF Core 开发如虎添翼
170 0
|
移动开发 前端开发 JavaScript
前端开发实战:利用Web Speech API之speechSynthesis实现文字转语音功能
前端开发实战:利用Web Speech API之speechSynthesis实现文字转语音功能
1531 0
|
存储 人工智能 JSON
基于函数计算FC一键部署ComfyUI绘画平台体验
【8月更文挑战第11天】基于函数计算FC一键部署ComfyUI绘画平台体验
349 1
|
JavaScript
Vue 3:检验手机号码的逻辑
Vue 3:检验手机号码的逻辑
|
开发框架 缓存 .NET
【Entity Framework】EF中DbSet类详解
【Entity Framework】EF中DbSet类详解
296 1
【Entity Framework】EF中DbSet类详解