ASP.NET Core 如何通过 Entity Framework 提供数据访问?
Entity Framework 是一个 ORM(对象关系映射器)框架,可轻松从关系数据库中创建、检索、更新或删除数据。使用 Entity Framework,您可以使用抽象数据库相关代码的 C# 对象,因此您很少需要处理原始 SQL。
下图说明了 Entity Framework 在分层架构中的位置。
Entity Framework Core (EF Core) 是 Entity Framework 6 的新版本。与 .NET Core 类似,EF Core 是 Entity Framework 的轻量级、开源和跨平台版本。它专为与 .NET Core 应用程序一起使用而开发。
要将 EF Core 与 SQL Server 集成到您的 ASP.NET Core 应用程序中,您需要使用数据库提供程序和 EF Core 工具的 NuGet 包。例如,如果我们想使用 SQL Server 作为数据库,我们将安装 Microsoft.EntityFrameworkCore.SqlServer NuGet 包。要安装 EF Core 工具,请使用 Microsoft.EntityFrameworkCore.Tools 包。
使用 Entity Framework 的应用程序与 DbContext 对象一起工作,它是 Entity Framework 的重要组成部分。它表示与数据库的会话,用于创建、修改域实体的实例并将其保存到数据库中。
DbContext 类表示工作单元模式,其中单个对象跟踪受更改影响的对象列表并协调与数据库的持久性。它执行以下职责:
管理与数据库的连接
设置域模型及其之间的关系
执行 CRUD(创建、读取、更新、删除)操作
跟踪事务中的更改
缓存数据以提高性能
应用程序的 DbContext 类是通过从 Microsoft.EntityFrameworkCore.DbContext 类派生而创建的。派生类指定哪些实体包含在数据模型中。这里有一个例子可以说明这一点。
using ContosoUniversity.Models; using Microsoft.EntityFrameworkCore; namespace ContosoUniversity.Data{ public class SchoolContext : DbContext{ public SchoolContext(DbContextOptions<SchoolContext> options) : base(options){ } public DbSet<Course> Courses { get; set; } public DbSet<Enrollment> Enrollments { get; set; } public DbSet<Student> Students { get; set; } } }
DbContext 对象提供了辅助方法来查询、修改、删除和保存数据库中的数据。
// 从数据库读取数据 private static void Main(string[] args){ var context = new SchoolContext(); var studentsWithSameName = context.Students .Where(s => s.FirstName == "David") .ToList(); } // 修改和保存数据 private static void Main(string[] args){ var context = new SchoolContext(); var david = context.Students .Where(s => s.FirstName == "David") .First(); david.Grade = "A"; context.SaveChanges(); } // 删除数据 private static void Main(string[] args){ var context = new SchoolContext(); var david = context.Students .Where(s => s.FirstName == "David") .First(); context.Students.Remove(david); context.SaveChanges(); }