LiXiang98

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
统计
 

一、与数据库表映射

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还是不支持批量插入数据

posted on   LiXiang98  阅读(79)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下
 
点击右上角即可分享
微信分享提示