首页 > 编程语言 >Asp.net core基础(一)Entity FrameworkCore的增删查改

Asp.net core基础(一)Entity FrameworkCore的增删查改

时间:2022-09-26 18:11:06浏览次数:48  
标签:FrameworkCore core Asp Name tdc public net t1 Teacher

一、EntityFramework Core的介绍

EntityFramework Core是.net core中的ORM(object relational mapping[对象关系映射])框架,它可以让开发人员以面向对象的方式进行数据库操作,从而提高开发的效率。

ORM是对ADO.NET的封装,ORM底层仍然是通过ADO.NET访问数据库的。

二、EntityFramework Core使用步骤

需要一个T_teachers表,表的列名为Id,Name,Age,T_Number。

步骤一:创建一个对应T_Teachers表的实体类Teacher

public class Teacher
    {
        public long Id { get; set; }

        public string Name { get; set; }

        public int Age { get; set; }

        public string T_Number { get; set; }
    }

  

步骤二:安装Nuget包Microsoft.EntityFrameworkCore.SqlServer

安装方式一:可以通过程序包管理器控制台

Microsoft.EntityFrameworkCore.SqlServer的6.0.0及以上版本是基于.net6的,由于目前使用的框架是.net core3.1,因此支持.net core3.1的最新版本是5.0.17

安装方式二:使用NuGet程序包进行安装

步骤三:创建实现IEntityTypeConfiguration接口的实体类的配置类。比如给Teacher类实现一个IEntityTypeConfiguration接口的配置类TeacherConfiguration

public class TeacherConfiguration : IEntityTypeConfiguration<Teacher>
    {
        public void Configure(EntityTypeBuilder<Teacher> builder)
        {
            //Teacher类对应的表是T_teachers
            builder.ToTable("T_teachers");

            //设置属性Name的长度为20,不能为空
            builder.Property(e => e.Name).HasMaxLength(20).IsRequired();

        }
    }

步骤四:创建一个实现DbContext类的类。无论多少个实体类,只需要一个实现DbContext类的类。

public class TestDbContext:DbContext
    {
        //一个实体类,一个DbSet类型的属性
        public DbSet<Teacher> Teachers { get; set; }

        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            base.OnConfiguring(optionsBuilder);
            //选择使用的数据库
            string str = "Server=.;Database=Test2;Trusted_Connection=True;MultipleActiveResultSets=true";
            optionsBuilder.UseSqlServer(str);
        }

        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            base.OnModelCreating(modelBuilder);
            //加载当前程序集中所有实现了IEntityTypeConfiguration接口的类
            modelBuilder.ApplyConfigurationsFromAssembly(this.GetType().Assembly);
        }
    }

步骤五:安装使用EF Core生成数据库的工具。通过命令行或NuGet安装Microsoft.EntityFrameworkCore.Tools包

注意:Microsoft.EntityFrameworkCore.Tools支持.net core3.1的最后一个版本是5.0.17

步骤六:生成数据库表格

在程序包管理器控制台中分别输入"Add-Migration 名称",命令行会自动在项目的Migration文件夹中生成C#代码,这个文件中包含用来创建数据库表的表名、列名、列数数据类型、主键等的代码。此时上面的代码还没有执行,然后输入命令行"Update-database"命令编译并且执行数据库迁移代码。如下:

此时数据库表已经创建完成。

三、增加数据

using (TestDbContext tdc = new TestDbContext())
            {
                //增加数据
                Teacher t1 = new Teacher();
                t1.Name = "张三";
                t1.Age = 20;
                t1.T_Number = "T001";
                tdc.Teachers.Add(t1);
                //执行这一步,数据才会被提交
                tdc.SaveChanges();
            }

也可以使用异步的方法进行数据的提交,如下:

static  async Task Main(string[] args)
        {
            using (TestDbContext tdc = new TestDbContext())
            {
                //增加数据
                Teacher t1 = new Teacher();
                t1.Name = "李四";
                t1.Age = 20;
                t1.T_Number = "T001";
                tdc.Teachers.Add(t1);
                //执行这一步,数据才会被提交
                await tdc.SaveChangesAsync();
            }

            Console.WriteLine("ok");
        }

四、查询数据

五、修改数据

六、删除数据

注意:如果调用SaveChangesAsync方法,那么就需要给改方法前加await并给将所处的同步方法改为异步方法,不然即使没有报错,也会无法删除数据的现象。

 

标签:FrameworkCore,core,Asp,Name,tdc,public,net,t1,Teacher
From: https://www.cnblogs.com/fengjiqiang123/p/16731877.html

相关文章

  • NetCore 生成JWT
    调用privatereadonlyIESP_UsersBLL_UsersBLL;privatereadonlyIConfiguration_configuration;privateJWTService_jwtService;......
  • EF Core – 7.0 New Features
    前言这篇不会细谈功能,只是一个总链接. 参考Docs–What'sNewinEFCore7.0 BreakingChange我follow EFCore–搭建单侧环境 做了一遍,在运行 dotne......
  • HMS Core上新啦!
    HMSCore上新啦!分析服务营销分析报告全新上线;?ha_source=hms1运动健康服务支持目标场景事件订阅;音频编辑服务提供专业的三维声音频编辑与渲染能力,更多HMSCore能力可点击网......
  • .netcore 下搭建本地nuget服务器
    1.首先创建一个普通的项目这个项目后面会放入我们自定义的nuget服务器给予其他项目应用2.我们对这个项目进行一下设置1)项目->属性选中构建nuget包2)项目点击发布......
  • EFCore乐观并发控制
    为了避免多个用户同时操作同一个资源造成的并发冲突问题,通常需要进行并发控制。并发控制分为:乐观和悲观两策略悲观:悲观并发控制一般采用行锁、表锁等排它销对资源进行锁......
  • CAP事件总线在NetCore中的应用+MySql存储队列信息
    上一篇链接:https://www.cnblogs.com/fei686868/p/16721769.html在上一篇中,我们介绍了CAP基于内存存储的应用。本篇我们介绍下,把存储做到mysql中,队列还是使用内存队列。my......
  • 记录黑苹果OpenCore 安装-v跑码结束显示logo、进度条、光标,但不进入系统问题
    型号:Dell Inspiron15-3559    核显:HD520OS版本: macOSCatalina10.15.6(19G2021) 问题-v模式启动,跑码结束,显示苹果logo和进度条,鼠标光标正常显示,连......
  • .Net Core 静态类获取注入服务
    由于静态类中无法使用有参构造函数,从而不能使用常规的方式(构造函数获取)获取服务,我们可以采取通过IApplicationBuilder获取1.首先创建一个静态类usingMicrosoft.A......
  • net core web项目(net 6.0)增加apicontroller
    program.cs增加contrller支持app.UseStaticFiles();app.UseRouting();app.UseAuthorization();app.MapRazorPages();app.MapControllers();//增加controllers映射ap......
  • 学习笔记-Metasploit
    Metasploit模块exploits(渗透攻击/漏洞利用模块)  利用已发现的安全漏洞或配置弱点对远程目标进行攻击,为Metsaploit框架中最核心的功能组件。payloads(攻击......