EntityFramework数据查询

前言

     Entity Framework Core 使用语言集成查询 (LINQ) 来查询数据库中的数据。 通过 LINQ 可使用 C#(或
你选择的其他 .NET 语言)编写强类型查询。 它使用你派生得到的上下文和实体类来引用数据库对象。EF 
 Core 将 LINQ 查询的表示形式传递给数据库提供程序

一、数据库设计

1.1 创建数据库模型

首先建一个班级表和一个学生表,班级表和学生关系为一个班级对应多个学生即为一对多关系

1.2 数据库填写如下

1.2.1班级表如下

在这里插入图片描述

1.2.1班级表如下

在这里插入图片描述

二、实体类生成

1.生成方法见:

EntityFramework实体框架——反向工程(实体类生成)

2.生成结果:

在这里插入图片描述

3.查询数据

3.1 加载所有数据

using (var entityframeworktestContext = new entityframeworktestContext())
{
    List<Student> students = entityframeworktestContext.Students.ToList();

    Console.WriteLine(students.Count);
}

读取到的学生的数量为: 3

3.2 加载单个数据

using (var entityframeworktestContext = new entityframeworktestContext())
{
    Student students = entityframeworktestContext.Students.Single(stu => stu.Id == 1);

    Console.WriteLine(students.Name);
}

读取到的学生姓名为:张三

3.3 预先加载

3.3.1 数据库关联解析

预先加载加涉及到了上面设计库设置的一对多的关系,如下图在实体类生成过程中在Class类型生成了一个学生的集合即 Students,这就是数据库中描述的一个班级有多个学生的集合,那么在查询过程中首先也要去预先加载集合中的数据。
班级类

3.3.2 Include 方法

 使用 Include 方法来指定要包含在查询结果中的关联数据     
using (var entityframeworktestContext = new entityframeworktestContext())
{
    List<Class> tmpClasses  = entityframeworktestContext.Classes.Include(cl => cl.Students).ToList();

    foreach (var classItem in tmpClasses)
    {
        foreach (var studentItem in classItem.Students)
        {
            Console.WriteLine(studentItem.Name);
        }
    }
}

运行结果:
在这里插入图片描述

3.4 保存数据

3.4.1基本保存

using (var entityframeworktestContext = new entityframeworktestContext())
{
    Class tmpClass = new Class() {Id = 2,Name = "六年级2班"};

    entityframeworktestContext.Add(tmpClass);

    entityframeworktestContext.SaveChanges();

}

在这里插入图片描述

3.4.2 相关数据保存

using (var entityframeworktestContext = new entityframeworktestContext())
{
    Class tmpClass = new Class()
    {
        Id = 3,
        Name = "六年级3班",
        Students = new List<Student>()
        {
          new Student{Id = 5,Age = 16,Name = "赵四" },
          new Student{Id = 6,Age = 16,Name = "尼古拉斯"},
          new Student{Id = 7,Age = 16,Name = "王五" }
        }
    };

    entityframeworktestContext.Add(tmpClass);
    entityframeworktestContext.SaveChanges();
}

结果:
在这里插入图片描述

本文档中只是罗列的经常使用的集中用法,还有很多使用方法可参考官方文档参考官方文档

总结

Entity Framework Core 使用语言集成查询 (LINQ) 来查询数据库中的数据。 通过 LINQ 可使用 C#(或你选择的其他 .NET 语言)编写强类型查询。 它使用你派生得到的上下文和实体类来引用数据库对象。 EF Core 将 LINQ 查询的表示形式传递给数据库提供程序。 反过来,数据库提供程序将其转换为数据库特定的查询语言(例如,用于关系数据库的 SQL)。 即使结果中返回的实体已存在于上下文中,也始终对数据库执行查询。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值