当前位置:首页 > C# > 正文

Entity Framework Core入门教程(详解DbContext核心用法)

在现代C#开发中,Entity Framework Core(简称EF Core)是微软官方推荐的ORM(对象关系映射)框架,它让开发者能够以面向对象的方式操作数据库,而无需编写繁琐的SQL语句。本文将带你从零开始,深入浅出地掌握EF Core中最核心的类——DbContext,即使你是编程小白,也能轻松上手!

Entity Framework Core入门教程(详解DbContext核心用法) Core  DbContext C# ORM .NET数据库操作 第1张

什么是 DbContext?

DbContext 是 EF Core 的核心类,它代表与数据库的会话。你可以把它理解为应用程序与数据库之间的“桥梁”。通过 DbContext,你可以:

  • 查询数据库中的数据
  • 添加、修改或删除记录
  • 管理数据库连接
  • 配置实体与数据库表的映射关系

第一步:创建一个简单的模型类

假设我们要管理一个“博客系统”,首先定义一个博客文章(BlogPost)实体:

public class BlogPost{    public int Id { get; set; }    public string Title { get; set; } = string.Empty;    public string Content { get; set; } = string.Empty;    public DateTime PublishedDate { get; set; }}

第二步:创建 DbContext 子类

接下来,我们创建一个继承自 DbContext 的类,比如叫 AppDbContext

using Microsoft.EntityFrameworkCore;public class AppDbContext : DbContext{    public DbSet<BlogPost> BlogPosts { get; set; }    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)    {        // 配置使用 SQLite 数据库(你也可以换成 SQL Server、MySQL 等)        optionsBuilder.UseSqlite("Data Source=blog.db");    }}

这里的关键点:

  • DbSet<BlogPost> 表示数据库中的一张表,对应我们的 BlogPost 实体。
  • OnConfiguring 方法用于配置数据库连接字符串和提供程序(如 SQLite、SQL Server)。

第三步:使用 DbContext 操作数据

现在我们可以用 AppDbContext 来增删改查数据了。例如,添加一篇新博客:

using var context = new AppDbContext();// 创建数据库(如果不存在)context.Database.EnsureCreated();// 添加新博客var post = new BlogPost{    Title = "我的第一篇博客",    Content = "欢迎来到我的博客世界!",    PublishedDate = DateTime.Now};context.BlogPosts.Add(post);context.SaveChanges(); // 提交更改到数据库// 查询所有博客var allPosts = context.BlogPosts.ToList();foreach (var p in allPosts){    Console.WriteLine($"{p.Title} - {p.PublishedDate}");}

第四步:依赖注入(推荐方式)

在实际项目(如 ASP.NET Core)中,通常使用依赖注入来管理 DbContext。在 Program.cs 中注册:

// Program.csbuilder.Services.AddDbContext<AppDbContext>(options =>    options.UseSqlite("Data Source=blog.db"));

然后在控制器或服务中通过构造函数注入即可使用,这样更符合现代C#开发规范。

总结

通过本教程,你已经掌握了 Entity Framework CoreDbContext 的基本用法。它是实现 C# ORM 功能的核心,也是进行 .NET数据库操作 的关键组件。只要理解了 DbContext 的作用和生命周期,你就能轻松构建数据驱动的应用程序。

小提示:记得在生产环境中使用迁移(Migrations)来管理数据库结构变更,而不是直接调用 EnsureCreated()