• 操作内存中的数据


    SingleOrDefault实验

    复制代码
    //SingleOrDefault实验
    using (var db = new Entities())
    {
        var classes = new Classes()
        {
            ClassName = "英语10501"
        };
        db.Classes.Add(classes);//标记添加
    
        var query = from v in db.Classes
                    where v.ClassName == "英语10501"
                    select v;
        ObjectDumper.Write(query.SingleOrDefault());
        //此处输出结果为 NULL 说明SingleOrDefault 方法是直接从数据库中读取
    };
    复制代码

    说明:我们添加一个班级“英语10501”,并没有调用SaveChanges方法更新到数据库中。使用SingleOrDefault方法查询刚添加的班级。

    SQL语句追踪:只执行了一条查询语句,并未执行新增,说明数据存在于内存之中

    执行结果:

    结论:Single、First、SingleOrDefault 方法是都是直接从数据库中读取

    查询内存中的数据

    //查询内存中的数据
    using (var db = new Entities())
    {
        Console.WriteLine(db.Student.Local.Count);//输出 0 未执行sql 没有数据
    }

    先加载数据库再查询本地数据

    复制代码
    //先加载数据库再查询本地数据
    using (var db = new Entities())
    {
        var query = from v in db.Student select v;
        Console.WriteLine("遍历之前:打印个数:" + db.Student.Local.Count);//输出 0 
    
        foreach (var st in query)
        {
            ObjectDumper.Write(st.StudentName);
        }
        Console.WriteLine("遍历之后:打印个数:" + db.Student.Local.Count);//输出 11 
    }
    复制代码

    执行结果:

    Load方法把数据加载到内存

    复制代码
    //上面的方法每次操作都要先遍历 改用load
    using (var db = new Entities())
    {
        //using System.Data.Entity; 扩展方法
        db.Student.Load();
        Console.WriteLine(db.Student.Local.Count);
    
        var query = from v in db.Classes select v;
        query.Load();
        Console.WriteLine(db.Classes.Local.Count);
    }
    复制代码

    执行结果:

    说明:Load为扩展方法,需要先导入命名空间:using System.Data.Entity;

  • 相关阅读:
    仿网易/QQ空间视频列表滚动连播炫酷效果
    UIScrollerView当前显示3张图
    iOS AVPlayer视频播放器
    iOS 购物车动画
    C++从零实现简单深度神经网络(基于OpenCV)
    Android 轻松实现仿淘宝地区选择
    微信小程序之下拉刷新,上拉更多列表实现
    iOS 指南针
    tableView 获取网络图片,并且设置为圆角(优化,fps)
    黑客技术 —— Linux 命令行
  • 原文地址:https://www.cnblogs.com/wfy680/p/11969401.html
Copyright © 2020-2023  润新知