📅  最后修改于: 2023-12-03 15:14:52.791000             🧑  作者: Mango
Entity Framework 是一种用于.NET Framework 的对象关系映射 (ORM) 工具,它提供了管理数据库和实体(类或对象)之间关系的机制,同时也提供了多种方式来查询和操作应用程序的数据库。
在使用 Entity Framework 的过程中,了解其生命周期是非常有必要的。
EF 的生命周期分为以下四个阶段:
创建模型(Model Creation) 在这个阶段中,EF 会根据数据库结构自动生成实体模型。这个自动生成的模型包含了数据库所有的表以及对应的列、主键、外键、约束等信息,并且每个实体类对应一个数据库表。
查询(Querying) 在这个阶段中,应用程序会使用 LINQ 或者 SQL 来从数据库中查询数据。查询可以是立即执行的,也可以是延迟执行的。如果是延迟执行的,EF 会在需要数据时才去执行查询。
更新(Updating) 在这个阶段中,EF 会将应用程序所做的更改保存到数据库中。这些更改可以是添加、修改或删除操作。EF 会根据实体状态来判断需要执行哪种操作。
释放资源(Disposing) 最后一个阶段是 EF 释放资源的过程。在应用程序不再需要 EF 的时候,需要显式地通过调用 Dispose() 方法来释放 EF 所使用的资源。
在 EF 中,实体状态是非常重要的概念。通过实体状态,EF 能够判断需要执行哪些操作(添加、修改、删除)。实体状态分为以下四种:
未更改(Unchanged) 如果实体状态是未更改,表示该实体没有被修改过,EF 不会执行任何操作。
已添加(Added) 如果实体状态是已添加,表示该实体是新创建的,EF 会将该实体插入到数据库中。
已修改(Modified) 如果实体状态是已修改,表示该实体已经被修改过,EF 会将这些修改更新到数据库中。
已删除(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() 方法来保存更改。