一、与数据库表映射
1、安装依赖:Install-Package Microsoft.EntityFrameworkCore.SqlServer;
2、创建实体类:
public record Person { public long? Id { get;set; } public string Name { get; set; } public string BloodType { get; set; } public bool Genger { get; set; } public DateTime? BirthDate { get; set; } }
3、实体配置类
class PersonEntityConfig:IEntityTypeConfiguration<Person>// 与Person实体类对应 { public void Configure(EntityTypeBuilder<Person> builder) { builder.ToTable("Persons");
builder.Property(t=>t.Name).HasMaxLength(200).IsRequired();//给Name设置最大长度,并且不为空 } }
4、创建DBContext类
public class TestDBContext:DbContext { public DbSet<Person> Persons; protectd override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { string connStr = "Server=.;DataBase=demo;Trusted_Connection=True;MuiltipleActiveResultSet=true"; optionsBuilder.UseSqlServer(connStr); } protected override void OnModelCreating(ModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); modelBuilder.ApplyConfigurationsFromAssembly(this.GetType().Assembly);//从当前程序集中加载所有的EntityTypeConfiguration } }
5、生成数据库
先安装Microsoft.EntityFrameworkCore.Tools,
然后在程序包管理器控制台中执行Add-Migration 此次迁移说明
然后在程序包管理器控制台中执行Update-Database
数据库中表创建成功
6、实体类有修改?
执行Add-Migration xxx,然后执行Update-Database
二、增删改查
1、增
using(var ctx =new TestDBContext()) { Person p = new Person(); p.Name = "111"; ctx.Persons.Add(p); await ctx.SaveChangesAsync(); }
2、删
using(var ctx =new TestDBContext()) { var p = ctx.Perons.Single(t=>t.Id==1); ctx.Perons.Remove(p); // ctx.Remove(p) await ctx.SaveChangesAsync(); }
3、改
using(var ctx =new TestDBContext()) { var p = ctx.Persons.Single(t=>t.Id==1); p.Name="djifjsd"; await ctx.SaveChangesAsync(); }
4、查
using(var ctx = new TestDBContext()) { var perons = ctx.Persons.Where(t=>t.Name=="111"); var persons1 = ctx.Perons.OrderBy(t=>t.Id); }
删和改都要先查出来再进行操作。。。
在EFCore7中不需要先查出来再操作并且支持了批量删除和批量更新:
await ctx.Persons.Where(e=>e.Id==123).ExecuteUpdateAsync(s=>s.SetProperty(b=>b.Name,"NewName"));// 更新操作
await ctx.Persons.Where(t => t.Genger==false).ExecuteDeleteAsync();//删除操作
目前EFCore还是不支持批量插入数据
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下