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

本文介绍了Entity Framework中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);
    }
};

执行结果:

此处注意:使用linqlamba时,变量一定要提前转存,不能在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());
            };
posted on 2016-08-09 10:14 思如雨 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/gosky/p/5752001.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值