实体框架核心(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,你可以轻松管理数据库架构变更、执行增删改查操作,并维护一个简洁且可扩展的代码库。
如果你喜欢我的文章,请给我一个赞!谢谢