C# (.NET) 的 ORM:对比与示例
在 .NET 平台的现代开发中,与数据库的交互很少能离开对象关系映射(ORM)。ORM 库允许开发者通过面向对象的代码与关系型数据库进行交互,无需手动编写复杂的 SQL 查询。本文将对比三种最流行的 C# ORM:Entity Framework Core、Dapper 和 LINQ to SQL,并提供实际使用示例。
1. Entity Framework Core (EF Core)
EF Core 是微软推出的现代化、跨平台 ORM,是 Entity Framework 6 的演进版本。它支持多种数据库系统(SQL Server、PostgreSQL、SQLite、MySQL 等),并提供强大的数据处理能力。
主要特点:
- Code First / Database First — 可以根据代码创建数据库,反之亦然。
- LINQ 查询 — 使用 C# 编写查询,EF Core 将其转换为 SQL。
- 迁移 — 自动管理数据库架构。
- 延迟加载 (Lazy Loading) — 自动加载关联数据。
代码示例 (Code First):
using Microsoft.EntityFrameworkCore;using System.Collections.Generic;
public class User{ public int Id { get; set; } public string Name { get; set; } public string Email { get; set; }}
public class AppDbContext : DbContext{ public DbSet<User> Users { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { optionsBuilder.UseSqlServer("Server=.;Database=MyDb;Trusted_Connection=True;"); }}
// 使用using (var db = new AppDbContext()){ // 添加用户 var user = new User { Name = "伊万", Email = "ivan@example.com" }; db.Users.Add(user); db.SaveChanges();
// 通过 LINQ 查询 var users = db.Users.Where(u => u.Name.Contains("伊万")).ToList();}优点: 高性能、功能丰富、支持迁移、社区活跃。缺点: 内存占用较大、复杂查询配置困难。
2. Dapper
Dapper 是由 Stack Overflow 团队创建的轻量级微 ORM。它不提供完整的映射功能,但允许直接执行 SQL 查询,并将结果自动映射到 C# 对象。
主要特点:
- 极致性能 — Dapper 被认为是 .NET 中最快的 ORM 之一。
- 原生 SQL — 您直接编写纯 SQL 查询。
- 极简主义 — 没有迁移、上下文和复杂配置。
代码示例:
using Dapper;using System.Data.SqlClient;using System.Linq;
public class User{ public int Id { get; set; } public string Name { get; set; } public string Email { get; set; }}
// 使用string connectionString = "Server=.;Database=MyDb;Trusted_Connection=True;";using (var connection = new SqlConnection(connectionString)){ // 执行 SQL 查询 var users = connection.Query<User>("SELECT * FROM Users WHERE Name = @Name", new { Name = "伊万" }).ToList();
// 执行存储过程 var result = connection.Query<User>("GetUsers", commandType: System.Data.CommandType.StoredProcedure);}优点: 速度快、简单、资源消耗低。缺点: 缺少迁移功能、需要手动编写 SQL、不支持自动加载关联实体。
3. LINQ to SQL
图书馆中也有
推荐