什么是 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