EFCoreORM框架解析-代码先行-实体生成数据库
- 新建EFcore项目创建数据库通过实体生成数据库
- 数据库迁移 表改动备份,还原 实体类生成数据库结构
- DBFirst-数据库结构生成实体类
1.新建EFcore项目 通过实体生成数据库
第一步:新建新的控制台程序
第二步:新增类文件 CustomDbContext,
添加相关引用 Microsoft.EntityFrameworkCore.SqlServer Microsoft.EntityFrameworkCore
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