【EF学习笔记05】----------DBContext基础查询

遍历所有实体

//遍历所有学生 DBSet
using (var db = new Entities())
{
    foreach (var student in db.Student)
    {
        ObjectDumper.Write(student.StudentName);
    }
};

说明:打印所有学生的姓名

根据条件查询

using (var db = new Entities())
{
    //查询所有出生日期在1991年1月1日之后的学生
    var day = Convert.ToDateTime("1991-1-1");
    var students = from v in db.Student where v.Birthday >= day select v;
    foreach (var student in students)
    {
        ObjectDumper.Write(student.StudentName+"-"+student.Birthday);
    }
};

执行结果:

此处注意:使用linq和lamba时,变量一定要提前转存,不能在linq内部使用C#函数。

错误的写法:

using (var db = new Entities())
{
    var students = from v in db.Student where v.Birthday >= Convert.ToDateTime("1991-1-1") select v;
    foreach (var student in students)
    {
        ObjectDumper.Write(student.StudentName+"-"+student.Birthday);
    }
};

这样写直接就会报错:

按照生日排序 升序排列(默认)

using (var db = new Entities())
{
    var students = from v in db.Student
                    orderby v.Birthday
                    select v;
    foreach (var student in students)
    {
        ObjectDumper.Write(student);
    }
};

降序:descending

var students = from v in db.Student
                orderby v.Birthday descending
                select v;

查询单个实体 Find方法

//find查询单个实体
using (var db = new Entities())
{
    var student = db.Student.Find(1);
    ObjectDumper.Write(student);
};

说明:根据主键查询Student信息,如果找不到,则返回 NULL

查询单个实体 Single方法

//Single查询单个实体
using (var db = new Entities())
{
    var student = from v in db.Student
                    where v.StudentName=="张三"
                    select v;
    //single方法 查不到记录 或者 多条记录 都会报错
    ObjectDumper.Write(student.Single());
};

说明:调用single方法查不到记录 或者 多条记录 都会报错

查询单个实体 SingleOrDefault方法

//SingleOrDefault查询单个实体
using (var db = new Entities())
{
    var student = from v in db.Student
                    where v.StudentName == "李四"
                    select v;
    //SingleOrDefault方法 查不到记录返回null ,如果查询到多条记录会报错
    ObjectDumper.Write(student.SingleOrDefault());
};

说明:调用SingleOrDefault方法 查不到记录放回NULL 如果查询到多条记录报错

完整案例:

//遍历所有学生
            using (var db = new Entities())
            {
                var students = from v in db.Student select v;
                foreach (var student in students)
                {
                    ObjectDumper.Write(student);
                }
            };

            Console.WriteLine("==========按照生日排序===========");
            //按照生日排序 升序
            using (var db = new Entities())
            {
                var students = from v in db.Student
                                orderby v.Birthday descending
                                select v;
                foreach (var student in students)
                {
                    ObjectDumper.Write(student);
                }
            };

            Console.WriteLine("==========find查询单个实体===========");
            //find查询单个实体
            using (var db = new Entities())
            {
                var student = db.Student.Find(1);
                ObjectDumper.Write(student);
            };

            Console.WriteLine("==========single查询单个实体===========");
            //Single查询单个实体
            using (var db = new Entities())
            {
                var student = from v in db.Student
                                where v.StudentName=="张三"
                                select v;
                //single方法 查不到记录 或者 多条记录 都会报错
                ObjectDumper.Write(student.Single());
            };

            Console.WriteLine("==========SingleOrDefault查询单个实体===========");
            //SingleOrDefault查询单个实体
            using (var db = new Entities())
            {
                var student = from v in db.Student
                                where v.StudentName == "李四"
                                select v;
                //SingleOrDefault方法 查不到记录返回null ,如果查询到多条记录会报错
                ObjectDumper.Write(student.SingleOrDefault());
            };
时间: 2024-11-07 18:22:54

【EF学习笔记05】----------DBContext基础查询的相关文章

mybatis学习笔记(11)-一对多查询

mybatis学习笔记(11)-一对多查询 mybatis学习笔记11-一对多查询 示例 小结 本文实现一对多查询,查询订单及订单明细的信息 示例 sql 确定主查询表:订单表 确定关联查询表:订单明细表 在一对一查询基础上添加订单明细表关联即可. SELECT orders.*, user.username, user.sex, user.address, orderdetail.id orderdetail_id, orderdetail.items_id, orderdetail.item

EF学习笔记(九):异步处理和存储过程

总目录:ASP.NET MVC5 及 EF6 学习笔记 - (目录整理) 上一篇:EF学习笔记(八):更新关联数据 本篇原文:Async and Stored Procedures 为何要采用异步? 一个Web服务器肯定有可用线程的限制,那么在一些访问量特别大的情况下,线程肯定会消耗完:这个时候服务器肯定处理不了请求,必须等线程里处理结束才可以处理请求: 在非异步的时候,很多线程都处于等待状态,并不是一直在工作,而是在等类似于I/O等处理结束: 采用异步的时候,当一个处理在等待I/O处理结束的时

EF学习笔记(八):更新关联数据

学习笔记主目录链接:ASP.NET MVC5 及 EF6 学习笔记 - (目录整理) 上一篇链接:EF学习笔记(七):读取关联数据 本篇原文链接:Updating Related Data 本篇主要考虑对于有关联的数据进行新增.删除.更新操作:比如Course .Instructor: 对于Course来说,新增时候必须定义属于哪个Department,所以在新增.更新操作的时候,必须要用户选择Department: MVC5在选择基础控制器及视图框架的时候,如果选择EF的操作框架,则会自动带一

SWIFT学习笔记05

1.Swift 无需写break,所以不会发生这种贯穿(fallthrough)的情况.2.//用不到变量名,可用"_"替换 for _ in 1...power { answer *= base } 3.case 可以匹配更多的类型模式,包括区间匹配(range matching),元组(tuple)和特定类型的描述. 可以这样用case case 1...3: naturalCount = "a few" 4.如果存在多个匹配,那么只会执行第一个被匹配到的 ca

加壳学习笔记(二)-汇编基础

7.简单的汇编语法:   堆栈平衡  PUSH,POP功能: 把操作数压入或取出堆栈语法: PUSH 操作数 POP 操作数格式: PUSH r PUSH M PUSH data POP r POP mPUSHF,POPF,PUSHA,POPA功能: 堆栈指令群格式: PUSHF POPF PUSHA POPAADD,ADC功能: 加法指令语法: ADD OP1,OP2 ADC OP1,OP2格式: ADD r1,r2 ADD r,m ADD m,r ADD r,data影响标志: C,P,A,

卷积神经网络(CNN)学习笔记1:基础入门

卷积神经网络(CNN)学习笔记1:基础入门 Posted on 2016-03-01   |   In Machine Learning  |   9 Comments  |   14935  Views 概述 卷积神经网络(Convolutional Neural Network, CNN)是深度学习技术中极具代表的网络结构之一,在图像处理领域取得了很大的成功,在国际标准的ImageNet数据集上,许多成功的模型都是基于CNN的.CNN相较于传统的图像处理算法的优点之一在于,避免了对图像复杂的

IBatis.Net学习笔记六--再谈查询

在IBatis.Net学习笔记五--常用的查询方式 中我提到了一些IBatis.Net中的查询,特别是配置文件的写法. 后来通过大家的讨论,特别是Anders Cui 的提醒,又发现了其他的多表查询的方式.在上一篇文章中我提到了三种方式,都是各有利弊:第一种方式当数据关联很多的情况下,实体类会很复杂:第二种方式比较灵活,但是不太符合OO的思想(不过,可以适当使用):第三种方式最主要的问题就是性能不太理想,配置比较麻烦. 下面是第四种多表查询的方式,相对第二种多了一点配置,但是其他方面都很好(当然

C++ GUI Qt4学习笔记05

C++ GUI Qt4学习笔记05 qtc++正则表达式 QIntValidator           --  只让用户输入整数 QDoubleValidator     --  只让用户输入浮点数 QRegExpValidator    --  只让用户按照正则表达式定义好的样式进行输入 本章讲解如何使用Qt开发自定义窗口部件. 通过对一个已经存在的Qt窗口部件进行子类化或者直接对QWidget进行子类化,就可以创建自定义窗口部件. 集成自定义窗口到Qt设计师中,这样就可以像使用内置的Qt窗

APUE 学习笔记(一) Unix基础知识

1. Unix 体系结构 内核的接口被称为系统调用 公用函数库构建在系统调用接口之上 应用软件既可以调用公用函数库,也可以直接进行系统调用 2. 文件和目录 目录操作函数:opendir---> readdir---> closedir struct dirent 结构体 stat 系统调用 3.程序.进程.线程 程序:存放在磁盘上.并处于某个目录中的一个可执行文件.使用exec系列函数将程序从磁盘读入存储器,并使其执行 进程:程序的执行实体.进程控制的3个函数:fork.exec.waitp