面向初学者的 Entity Framework Core

科技   2024-12-18 06:58   上海  


实体框架核心(Entity Framework Core,简称EF Core)是一款适用于.NET应用程序的开源、轻量级且跨平台的对象关系映射器(Object-Relational Mapper,简称ORM)。它允许开发人员使用.NET对象来操作数据库,从而无需编写大多数SQL查询语句。EF Core通过对数据库交互的复杂性进行抽象,使得数据访问代码更易于维护、扩展和测试。

如果你刚开始接触EF Core,本文将介绍其基本概念并帮助你上手使用它。

什么是ORM?

在深入了解EF Core之前,理解什么是ORM非常重要。ORM(对象关系映射)是软件开发中用于在不兼容的系统(如数据库和编程语言)之间转换数据的一种技术。简单来说,ORM允许你使用面向对象编程的方式与数据库进行交互,而无需编写原始的SQL查询语句。

为什么使用实体框架核心?

以下是EF Core被广泛使用的一些原因:

  • 与SQL解耦:对于诸如增删改查(Create,Read,Update,Delete,即CRUD)等基本的数据库操作,你无需编写SQL查询语句。EF Core会在幕后生成相应的SQL语句。

  • 跨平台:EF Core支持Windows、Linux和macOS系统,这使其适用于现代.NET应用程序。

  • 支持多种数据库:EF Core可以与不同的数据库协同工作,例如SQL Server、SQLite、PostgreSQL、MySQL等等。

  • 代码先行(Code-first)方法:借助EF Core,你可以使用代码先行的方法直接依据.NET类来创建数据库结构。

EF Core中的关键概念

  • DbContext: DbContext是EF Core中的核心类,用于管理数据库交互操作。它充当了.NET应用程序与数据库之间的桥梁。你通过继承DbContext类并指定哪些实体应映射到数据库表来定义自己的DbContext。

示例:

public class AppDbContext : DbContext
{
public DbSet<Student> Students { get; set; }
}
  • DbSet: DbSet表示可从数据库中查询的实体集合。它对应于数据库中的一张表,并且每个DbSet实例都允许你执行诸如添加、删除或查询数据之类的操作。

示例:

public class Student
{
public int Id { get; set; }
public string Name { get; set; }
public DateTime BirthDate { get; set; }
}

在上述示例中,AppDbContext中的Students是一个DbSet,它指向数据库中存储Student实体的表。

  • 迁移(Migrations): 迁移是EF Core的一项功能,它允许你随着应用程序的发展更新数据库架构。例如,如果你向一个实体类添加了新的属性,你可以生成一个迁移,以便将该变更应用到数据库架构上,同时又不会丢失现有数据。

要创建迁移,可使用以下命令:

dotnet ef migrations add InitialCreate

要更新数据库,使用以下命令:

dotnet ef database update

开始使用EF Core

以下是在.NET项目中设置EF Core的简单指南。

步骤1:安装EF Core包

在你的.NET项目中,需要安装EF Core相关的包。你可以通过NuGet包管理器或者命令行来进行安装。

命令如下:

dotnet add package Microsoft.EntityFrameworkCore
dotnet add package Microsoft.EntityFrameworkCore.SqlServer

步骤2:定义模型类

创建用于表示数据库实体的模型类。

例如:

public class Student
{
public int Id { get; set; }
public string Name { get; set; }
public DateTime BirthDate { get; set; }
}

步骤3:设置DbContext

接下来,创建一个继承自DbContext并代表数据库上下文的类。

public class AppDbContext : DbContext
{
public DbSet<Student> Students { get; set; }

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer(@"Server=.;Database=SchoolDB;Trusted_Connection=True;");
}
}

步骤4:创建并应用迁移

要创建初始数据库,按照前面介绍的方法生成迁移:

dotnet ef migrations add InitialCreate

然后,应用迁移来创建数据库:

dotnet ef database update

步骤5:使用EF Core执行增删改查操作

现在你可以使用EF Core与数据库进行交互了。以下是添加和检索数据的示例:

添加一名新学生

using (var context = new AppDbContext())
{
var student = new Student { Name = "John Doe", BirthDate = DateTime.Parse("2000-01-01") };
context.Students.Add(student);
context.SaveChanges();
}

检索学生信息

using (var context = new AppDbContext())
{
var students = context.Students.ToList();
foreach (var student in students)
{
Console.WriteLine($"{student.Id}: {student.Name} - {student.BirthDate}");
}
}

实体框架核心通过在SQL和数据库之上提供更高级别的抽象,简化了.NET应用程序中的数据库管理和交互操作。对于那些希望更专注于编写简洁、可维护代码,而不想处理原始SQL查询语句的开发人员来说,它是一款出色的工具。通过使用EF Core,你可以轻松管理数据库架构变更、执行增删改查操作,并维护一个简洁且可扩展的代码库。

如果你喜欢我的文章,请给我一个赞!谢谢


架构师老卢
资深软件架构师, 分享编程、软件设计经验, 教授前沿技术, 分享技术资源(每天发布电子书),每天进步一点点...
 最新文章