• EFCoreORM框架解析


    1. 新建EFcore项目创建数据库通过实体生成数据库
    2. 数据库迁移 表改动备份,还原  实体类生成数据库结构
    3. 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
    View Code

    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来进行相关操作,最后可以设置一下进行数据库的读写分离

  • 相关阅读:
    C if语句判断年龄
    C 计算时间差
    C 计算身高
    JRebel激活破解完美解决方式
    Maven optional和scope
    判断当前时间是否在某个时间段内
    给定时间加上几个小时
    RabbitMQ学习笔记
    浏览器、服务器会话
    Maven核心知识点梳理
  • 原文地址:https://www.cnblogs.com/LZXX/p/14745520.html
Copyright © 2020-2023  润新知