• .NET Entity FrameWork 总结 ,在项目中用处个人感觉不大。适合初级用用,不涉及到与数据库通信。


    更新数据

    第一种:
    先从数据库中取出数据,然后再更新字段。效率较低,需要2次数据库操作;
    Entities:就是EF实体数据模型
    using (var db = new Entities())
    {
    var data = db.Member.Find(5);
    data.Name = “new name”;
    db.SaveChanges();
    }
    实际生成的SQL语句
    select * from Member where ID=5
    update Member set Name = ‘new name’ where ID=5

    第二种:
    根据主键更新某个字段。如下虽然定义的变量里有password,但是没有设置ismodified=true,所以在savechanges时只会更新name的值
    using (var db = new Entities())
    {
    var data = new Member() { ID = 5, Name = “aa”, Password = “aa” };
    //禁止修改Member表数据,
    db.Entry(data).State = EntityState.Unchanged;// 或db.Member.Attach(data);
    //只允许修改Name
    db.Entry(data).Property(“Name”).IsModified = true;
    db.SaveChanges();
    }
    生成的SQL:
    update Member set Name=‘aa’ where ID=5

    第三种:
    根据主键更新所有字段,如下虽然未定义password,但到数据库中会更新为null
    using (var db = new ScratchDB2Entities())
    {
    var data = new Member() { ID = 5, Name = “aa” };
    //Member所有字段都修改。
    db.Entry(data).State = EntityState.Modified;
    db.SaveChanges();
    }
    生成的SQL:
    update Member set Name=‘aa’,Password=null where ID=5

    增加数据

    单条记录添加
    1、public void AddRegion()
    {
    using(Northwind db = new Northwind())
    {
    Region region = new Region();
    region.RegionID = 5;
    region.RegionDescription = “青岛”;
    db.Region.Add(region);
    db.SaveChanges();
    }
    }
    2、public void AddRegion()
    {
    using (Northwind db = new Northwind())
    {
    Region region = new Region();
    region.RegionID = 6;
    region.RegionDescription = “济南”;
    //EntityState 枚举类型 Modified、Added、Unchanged
    db.Entry(region).State = System.Data.Entity.EntityState.Added;
    db.SaveChanges();
    }
    }

    批量增加
    第一种方式:使用泛型
    public void AddRange()
    {
    using (Northwind db = new Northwind())
    {
    List regions = new List();
    regions.Add(new Region { RegionID = 6, RegionDescription = “济南” });
    regions.Add(new Region { RegionID = 7, RegionDescription = “合肥” });
    regions.Add(new Region { RegionID = 8, RegionDescription = “天津” });
    db.Region.AddRange(regions);
    Response.Write(db.SaveChanges());
    }
    }
    第二种方式:循环实体
    public void AddRange()
    {
    using(Northwind db = new Northwind())
    {
    for (int i = 10; i < 20; i++)
    {
    Region region = new Region();
    region.RegionID = i;
    region.RegionDescription = $“第{i}条”;
    db.Region.Add(region);
    }
    Response.Write(db.SaveChanges());
    }
    }

    删除数据

    在这里插入图片描述
    第二,自己创建一个对象,然后附加,然后删除。

    在这里插入图片描述
    第三,自己创建对象,然后放入EF容器,然后删除。
    在这里插入图片描述
    在这里插入图片描述

  • 相关阅读:
    cat监控本地docker部署
    AutoTrain:在Google Colab上微调LLM最简单的方法
    Qt实现Qchart的打印和打印预览的几种方法
    字节小程序填坑说明
    算法篇 滑动窗口 leetcode 长度最小的子数组
    享元模式学习
    PHP留言反馈管理系统源码
    leetcode.2400. 恰好移动 k 步到达某一位置的方法数目
    将Xml转为Map集合工具类
    牛客练习赛101
  • 原文地址:https://blog.csdn.net/u013400314/article/details/126663183