Asp.net core基础(一)Entity FrameworkCore的增删查改
一、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并给将所处的同步方法改为异步方法,不然即使没有报错,也会无法删除数据的现象。