📜  Entity Framework-生命周期(1)

📅  最后修改于: 2023-12-03 15:14:52.791000             🧑  作者: Mango

Entity Framework 生命周期

Entity Framework 是一种用于.NET Framework 的对象关系映射 (ORM) 工具,它提供了管理数据库和实体(类或对象)之间关系的机制,同时也提供了多种方式来查询和操作应用程序的数据库。

在使用 Entity Framework 的过程中,了解其生命周期是非常有必要的。

EF 的生命周期

EF 的生命周期分为以下四个阶段:

  1. 创建模型(Model Creation) 在这个阶段中,EF 会根据数据库结构自动生成实体模型。这个自动生成的模型包含了数据库所有的表以及对应的列、主键、外键、约束等信息,并且每个实体类对应一个数据库表。

  2. 查询(Querying) 在这个阶段中,应用程序会使用 LINQ 或者 SQL 来从数据库中查询数据。查询可以是立即执行的,也可以是延迟执行的。如果是延迟执行的,EF 会在需要数据时才去执行查询。

  3. 更新(Updating) 在这个阶段中,EF 会将应用程序所做的更改保存到数据库中。这些更改可以是添加、修改或删除操作。EF 会根据实体状态来判断需要执行哪种操作。

  4. 释放资源(Disposing) 最后一个阶段是 EF 释放资源的过程。在应用程序不再需要 EF 的时候,需要显式地通过调用 Dispose() 方法来释放 EF 所使用的资源。

EF 实体状态

在 EF 中,实体状态是非常重要的概念。通过实体状态,EF 能够判断需要执行哪些操作(添加、修改、删除)。实体状态分为以下四种:

  1. 未更改(Unchanged) 如果实体状态是未更改,表示该实体没有被修改过,EF 不会执行任何操作。

  2. 已添加(Added) 如果实体状态是已添加,表示该实体是新创建的,EF 会将该实体插入到数据库中。

  3. 已修改(Modified) 如果实体状态是已修改,表示该实体已经被修改过,EF 会将这些修改更新到数据库中。

  4. 已删除(Deleted) 如果实体状态是已删除,表示该实体已经被标记为删除,EF 会将该实体从数据库中删除。

示例代码

以下是一个简单的 EF 使用示例代码:

using (var db = new MyDbContext())
{
    // 查询所有的学生信息
    var students = db.Students.ToList();

    // 新增一个学生
    var newStudent = new Student { Name = "Tom", Age = 18 };
    db.Students.Add(newStudent);
    db.SaveChanges();

    // 修改学生信息
    var student = db.Students.FirstOrDefault(s => s.Id == 1);
    student.Age = 20;
    db.SaveChanges();

    // 删除一个学生
    var toBeDeletedStudent = db.Students.FirstOrDefault(s => s.Id == 1);
    db.Students.Remove(toBeDeletedStudent);
    db.SaveChanges();
}

在以上示例代码中,我们使用了 EF 来查询、新增、修改和删除学生信息。在使用 EF 进行新增、修改和删除操作时,我们需要将实体状态标记为已添加、已修改或已删除,这样 EF 才会知道需要执行哪种操作。同时,我们还需要在合适的时候调用 SaveChanges() 方法来保存更改。