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对象提供帮助程序方法来查询、修改、删除和保存数据库中的数据。
// Read data from the database private static void Main(string[] args){ var context = new SchoolContext(); var studentsWithSameName = context.Students .Where(s => s.FirstName == "David") .ToList(); } // Modify and save the data 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(); } // Delete the data 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(); }