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

更新于:2021年6月22日

浏览量:335

启动您的职业生涯

通过完成课程获得认证

开始学习
广告