EntityFramework数据查询

文章目录

  • 前言
  • 一、数据库设计
    • 1.1 创建数据库模型
    • 1.2 数据库填写如下
      • 1.2.1班级表如下
    • 在这里插入图片描述
      • 1.2.1班级表如下
  • 二、实体类生成
    • 1.生成方法见:
    • 2.生成结果:
    • 3.查询数据
      • 3.1 加载所有数据
      • 3.2 加载单个数据
    • 3.3 预先加载
      • 3.3.1 数据库关联解析
      • 3.3.2 Include 方法
    • 3.4 保存数据
      • 3.4.1基本保存
      • 3.4.2 相关数据保存
  • 总结

前言

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

一、数据库设计

1.1 创建数据库模型

首先建一个班级表和一个学生表,班级表和学生关系为一个班级对应多个学生即为一对多关系
EntityFramework数据查询_第1张图片

1.2 数据库填写如下

1.2.1班级表如下

EntityFramework数据查询_第2张图片

1.2.1班级表如下

在这里插入图片描述

二、实体类生成

1.生成方法见:

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

2.生成结果:

EntityFramework数据查询_第3张图片

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,这就是数据库中描述的一个班级有多个学生的集合,那么在查询过程中首先也要去预先加载集合中的数据。
EntityFramework数据查询_第4张图片

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);
        }
    }
}

运行结果:
EntityFramework数据查询_第5张图片

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();
}

结果:
EntityFramework数据查询_第6张图片

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

总结

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

你可能感兴趣的:(C#,linq,数据库,c#)