Entity Framework Core 用于 C# (.NET):完整指南及示例

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

什么是 Entity Framework Core 以及为什么需要它

Entity Framework Core (EF Core) 是微软为 .NET 平台开发的现代对象关系映射 (ORM) 工具。它允许开发人员使用 .NET 对象处理数据库,并省去了编写大部分数据访问代码的需要。



EF Core 是 Entity Framework 的一个轻量级、可扩展且跨平台的版本。它支持多种数据库管理系统,包括 SQL Server、SQLite、PostgreSQL、MySQL、Oracle 等。



EF Core 的主要功能:

  • 基于模型自动创建和更新数据库架构(Code First)
  • 使用 LINQ(语言集成查询)执行数据库查询
  • 自动跟踪对象更改并生成用于更新数据的 SQL 命令
  • 支持迁移以管理数据库架构更改
  • 支持实体之间的关系(一对一、一对多、多对多)
  • 延迟加载、贪婪加载和显式加载相关数据


安装 Entity Framework Core

EF Core 通过 NuGet 包管理器进行安装。与 Python 不同,这里使用 dotnet add package 或 Visual Studio 的包管理器。



通过 .NET CLI 安装:

dotnet add package Microsoft.EntityFrameworkCoredotnet add package Microsoft.EntityFrameworkCore.SqlServerdotnet add package Microsoft.EntityFrameworkCore.Tools


为 PostgreSQL 安装(Npgsql):

dotnet add package Npgsql.EntityFrameworkCore.PostgreSQL


为 SQLite 安装:

dotnet add package Microsoft.EntityFrameworkCore.Sqlite


为 MySQL 安装:

dotnet add package Pomelo.EntityFrameworkCore.MySql


快速入门及代码示例

让我们创建一个简单的控制台应用程序来处理图书数据库。



1. 创建数据模型:

public class Book{    public int Id { get; set; }    public string Title { get; set; }    public string Author { get; set; }    public int Year { get; set; }    public decimal Price { get; set; }}

public class Author{ public int Id { get; set; } public string Name { get; set; } public List<Book> Books { get; set; } = new();}


2. 创建数据库上下文:

public class LibraryContext : DbContext{    public DbSet<Book> Books { get; set; }    public DbSet<Author> Authors { get; set; }

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { optionsBuilder.UseSqlite("Data Source=library.db"); }}


3. 使用 EF Core 处理数据:

using var context = new LibraryContext();context.Database.EnsureCreated(); // 如果数据库不存在则创建

// 添加数据var author = new Author { Name = "列夫·托尔斯泰" };author.Books.Add(new Book { Title = "战争与和平", Year = 1869, Price = 1500m });author.Books.Add(new Book { Title = "安娜·卡列尼娜", Year = 1877, Price = 1200m });

context.Authors.Add(author);context.SaveChanges();

// 读取数据var books = context.Books .Where(b => b.Year > 1850) .OrderBy(b => b.Year) .ToList();

foreach (var book in books){ Console.WriteLine($"{book.Title} ({book.Year})");}


Entity Framework Core 的主要方法和功能



1. Add

描述: 将一个新实体以 Added 状态添加到上下文中。调用 SaveChanges() 时将执行 INSERT 命令。

参数:

  • object entity

推荐