EFCoreORM框架解析-代码先行-实体生成数据库
- 新建EFcore项目创建数据库通过实体生成数据库
- 数据库迁移 表改动备份,还原 实体类生成数据库结构
- DBFirst-数据库结构生成实体类
1.新建EFcore项目 通过实体生成数据库
第一步:新建新的控制台程序
第二步:新增类文件 CustomDbContext,
添加相关引用 Microsoft.EntityFrameworkCore.SqlServer Microsoft.EntityFrameworkCore
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | using Microsoft.EntityFrameworkCore; using System; using System.Collections.Generic; using System.Text; using Zhaoxi.NET5.EFCore.Client.Models; namespace Zhaoxi.NET5.EFCore.Client { /// <summary> /// nuget 引入:Microsoft.EntityFrameworkCore /// Microsoft.EntityFrameworkCore.SqlServer /// 1.手动建立CustomDbContext,继承DbContext /// 2.声明链接字符串 /// 3.添加两个方法:OnConfiguring(DbContextOptionsBuilder optionsBuilder)、OnModelCreating(ModelBuilder modelBuilder) /// /// /// 可以通过Context来生活成数据库 /// </summary> public class CustomDbContext:DbContext { string ConnectionString = "Server=.;Database=Net5DbInfoTest;Trusted_Connection=True;" ; //配置数据库链接 protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { optionsBuilder.UseSqlServer(ConnectionString); //使用SqlServer的链接字符串 } public DbSet<Company> Company { get ; set ; } public DbSet<SysLog> SysLog { get ; set ; } public DbSet<SysMenu> SysMenu { get ; set ; } public DbSet<SysRole> SysRole { get ; set ; } public DbSet<SysRoleMenuMapping> SysRoleMenuMapping { get ; set ; } public DbSet<SysUserRoleMapping> SysUserRoleMapping { get ; set ; } /// <summary> /// 配置数据库结构,关系映射 /// 初始化的时候,一些配置 /// </summary> /// <param name="modelBuilder"></param> protected override void OnModelCreating(ModelBuilder modelBuilder) { } } } |
第三步:添加相关实体

namespace Zhaoxi.NET5.EFCore.Client.Models { using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; [Table("SysLog")] public partial class SysLog { public int Id { get; set; } [Required] [StringLength(36)] public string UserName { get; set; } [Required] [StringLength(1000)] public string Introduction { get; set; } [StringLength(4000)] public string Detail { get; set; } public byte LogType { get; set; } public DateTime CreateTime { get; set; } public int CreatorId { get; set; } public DateTime? LastModifyTime { get; set; } public int? LastModifierId { get; set; } } }
最后第四步:Main方法生出数据库

#region 通过Api生成数据库-----CodeFirst;代码写好,生成数据库; using (CustomDbContext context = new CustomDbContext()) { ///生成数据库 context.Database.EnsureDeleted();//判断是否有数据库,如果有就删除 context.Database.EnsureCreated();//新建立一个数据库 } #endregion
2.代码改动后,更新数据库表结构改动备份,还原
在开发过程中,可以存在很多需求变更;变化后,可能会伴随表结构的变化
可以为每一次变化,生成一个类似于版本的文件---迁移文件
1.Nuge引入程序包;Microsoft.EntityFrameworkCore.Design
Microsoft.EntityFrameworkCore.Relational
Microsoft.EntityFrameworkCore.Tools
2.工具--程序包管理器控制台--执行命令(请注意:默认项目 选择自己当前的项目):
3.具体操作步骤:
---生成一个Migrations文件夹 初始版本的类文件
Add-migration Init001 -Context CustomDbContext(自己写的链接数据库Dbcontext命名的类)
--可回滚,更新数据库表结构,先删除后更新表结构:
Update-Database "需要更新那个版本的类结构明(如:20210508080034_Init001)" -Context CustomDbContext
3.如果实体类改动了,就需要使用 Add-migration "改动后的版本命名"-Context CustomDbContext(context命名的类) 记录改动过的表结构然后执行更新语句
3.DBFirst-数据库表结构生成实体类和context,已存在的实体不会被覆盖
添加引用
2.工具--程序包管理器控制台--执行命令(请注意:默认项目 选择自己当前的项目):
Scaffold-DbContext -Connection "Server=.;Database=Net5DbInfoTest;uid=sa;pwd=123“ Microsoft.EntityFrameworkCore.SqlServer -OutputDir "输入文件名“
4.剩下就是 业务层 实体层分层,通过contenxt来进行相关操作,最后可以设置一下进行数据库的读写分离
本文来自博客园,作者:12不懂3,转载请注明原文链接:https://www.cnblogs.com/LZXX/p/14745520.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY