首页 > 其他分享 >【.Net-EF】用于快速回顾 - 0

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

时间:2023-09-01 22:36:22浏览次数:31  
标签:set Users 回顾 get EF User context Net public

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

这一篇是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();

标签:set,Users,回顾,get,EF,User,context,Net,public
From: https://www.cnblogs.com/flashing-magic/p/17670669.html

相关文章

  • Educational Codeforces Round 123
    A.DoorsandKeys#include<bits/stdc++.h>usingnamespacestd;#defineintlonglongvoidsolve(){strings;cin>>s;map<char,int>pos;for(inti=0;i<6;i++)pos[s[i]]=i;if(pos['r&......
  • .NetCore6 与 MySql 联查 (使用Lambda表达式树)
    MySql 官网链接:  https://www.donet5.com/Doc/99999999999/1180    2. 落实代码  or and 并且(满足所有条件) 或者(满足其中一个条件)  查询 OrIF !非空,查询  3. 联查表  官网找方法   4.落实  我这有一个字典表......
  • Educational Codeforces Round 15 A - E
    EducationalCodeforcesRound15目录EducationalCodeforcesRound15A-MaximumIncreaseB-PowersofTwoC-CellularNetworkD-RoadtoPostOfficeE.AnalysisofPathesinFunctionalGraphA-MaximumIncrease一段上升子数组\([l,r]\)最大化\(r-l+1\),我们......
  • VS .NetCore 部署发布
    1.先安装IIS  步骤:  控制面板-程序和功能-启用或关闭Windows功能 确定 等待安装2.控制器右键点击发布3.点击发布  3.点击目标位置或者代开文件夹获取文件物理路径如图文件夹的路径所示  5. 复制刚才的物理路径   端......
  • .Net6.0 Redis操作其一List篇
    今天在写字典表时为了优化就用了redis,然后其中就又用到了redis中的一个LIst添加和读取的操作首先Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sortedset:有序集合)。今天讲的是其中之一lIst(列表)Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加......
  • KubeSphere 社区双周报 | KubeKey 新增网络插件 Hybridnet | 2023.08.18-08.31
    KubeSphere社区双周报主要整理展示新增的贡献者名单和证书、新增的讲师证书以及两周内提交过commit的贡献者,并对近期重要的PR进行解析,同时还包含了线上/线下活动和布道推广等一系列社区动态。本次双周报涵盖时间为:2023.08.18-2023.08.31。贡献者名单新晋KubeSphereCon......
  • Educational Codeforces Round 5 A-E
    EducationalCodeforcesRound5垫底咯,中间老师找我去聊了下新学期的机房借用和训练,但出去前就只有我没出E目录EducationalCodeforcesRound5AComparingTwoLongIntegersBDinnerwithEmmaCTheLabyrinthDLongestk-GoodSegmentE-SumofRemaindersAComparingTwo......
  • C#/.NET/.NET Core优秀项目和框架8月简报
    前言公众号每月定期推广和分享的C#/.NET/.NETCore优秀项目和框架(公众号每周至少推荐两个优秀的项目和框架当然节假日除外),公众号推文有项目和框架的介绍、功能特点以及部分截图等(打不开或者打开GitHub很慢的同学可以优先查看公众号推文,文末一定会附带项目和框架源码地址)。注意:排......
  • 5分钟带你回顾大文件分片以及异步计算hash的步骤
    背景  文件上传功能在中后台项目中是最常见的功能,分片上传是一种将大文件分割成多个小片段进行上传的技术,可以有效提高文件上传的速度和稳定性。思路  1.首先就是使用File.slice对文件进行分割产出一个数组用于存储每个小的chunk片段  2.异步计算hash值,可用作标识文......
  • NAT网关有什么功能(局域网内多个IP设备通过同一个公共IP地址来访问Internet)
    网络地址转换(NAT)是一种能够将私有IP地址转换为公共IP地址以访问互联网的技术。其原因在于IPv4地址资源基本开发完全,通过NAT技术可以实现多台设备在局域网内使用相同的公共IP地址访问互联网,或是通过互联网访问到这些局域网内的设备。NAT网关(网段隔离器)是专用于私有IP地址和公共IP地......