【.Net-EF】用于快速回顾 - 0

发布时间 2023-09-01 22:16:16作者: Ymrt

因为平时不做这方面项目,所以学了好几次,过了段时间就忘,特地写笔记用于快速回顾

这一篇是EFCore简单的使用,主要内容是:

  • 通过控制台项目来学习
  • 依赖/数据库SqlServer
  • 创建2个Model,User和Role,1个User可有多个Role
  • 创建继承自DbContext的类,使用上面2个Model
  • 迁移、更新命令
  • 简单的CRUD

STEP 1

根据项目的.net版本,安装以下对应版本的依赖

Microsoft.EntityFrameworkCore
Microsoft.EntityFrameworkCore.SqlServer
Microsoft.EntityFrameworkCore.Tools
Microsoft.EntityFrameworkCore.Design


STEP 2
  1. 创建文件夹用于放Model,文件夹可以命名为Models
  2. 在Models中添加User类和Role类内容如下

    internal class User
    {
        //可以用[Key]指定某个属性为主键,默认以Id或者类名+Id比如UserId为主键
        public int Id { get; set; }
        public string Name { get; set; }
        public string? PhoneNumber { get; set; }

        public ICollection<Role> Roles { get; set; }
    }
	
	
    internal class Role
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public User User { get; set; }
        public int UserId { get; set; }

    }


STEP 3
  1. 创建一个文件夹用于放Context
  2. 在此文件夹中创建一个类,继承DbContext

    internal class EFDbContext : DbContext
    {
        public DbSet<User> Users { get; set; }
        public DbSet<Role> Roles { get; set; }

        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            base.OnConfiguring(optionsBuilder);
            optionsBuilder.UseSqlServer("这里写数据库连接地址");
        }

    }


STEP 4
  1. 使用 add-migration 自定义内容 生成迁移代码
  2. 使用 update-database(创建)更新到数据库

STEP 5

var _context = new EFDbContext();

//假设这里new了一些user和role
//......

//增加
_context.Add(user);
//也可以 : _context.Users.Add(user);

//查/改/删除
_context.Users.FirstOrDefault();
_context.Users.Include(x=>x.Roles).FirstOrDefault();
_context.Users.Update(user);
_context.Users.Remove(user);

//保存
_context.SaveChanges();