Skip to content

常用 NuGet 包列表 ​

概述 ​

EF Core 生态系统拥有丰富的 NuGet 包,涵盖数据库提供程序、扩展工具、测试框架等。本文整理了最常用的 EF Core 相关包及其用途。


核心包 ​

1. EF Core 主包 ​

xml
<!-- EF Core 核心库 -->
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="8.0.0" />

<!-- 设计时支持(迁移必需) -->
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="8.0.0" />

<!-- 关系数据库抽象 -->
<PackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="8.0.0" />

说明:

  • Microsoft.EntityFrameworkCore: 核心功能,所有项目都需要
  • Microsoft.EntityFrameworkCore.Design: 开发时工具,仅开发环境需要
  • Microsoft.EntityFrameworkCore.Relational: 关系数据库通用抽象

数据库提供程序 ​

SQL Server ​

xml
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="8.0.0" />

特点:

  • ✅ 微软官方支持
  • ✅ 性能最优
  • ✅ 功能最完整
  • 💰 商业许可费用

PostgreSQL ​

xml
<PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="8.0.0" />

特点:

  • ✅ 开源免费
  • ✅ 强大的 JSON 支持
  • ✅ 跨平台
  • 🌍 社区活跃

MySQL / MariaDB ​

xml
<!-- Pomelo (推荐) -->
<PackageReference Include="Pomelo.EntityFrameworkCore.MySql" Version="8.0.0" />

<!-- Oracle 官方 -->
<PackageReference Include="MySql.EntityFrameworkCore" Version="8.0.0" />

对比:

  • Pomelo: 社区维护,更新快,功能丰富 ⭐⭐⭐⭐⭐
  • Oracle 官方: 官方支持,但更新较慢 ⭐⭐⭐

SQLite ​

xml
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="8.0.0" />

适用场景:

  • ✅ 移动应用(Xamarin/MAUI)
  • ✅ 桌面应用(WPF/WinForms)
  • ✅ 单元测试和集成测试
  • ✅ 小型嵌入式应用

Cosmos DB ​

xml
<PackageReference Include="Microsoft.EntityFrameworkCore.Cosmos" Version="8.0.0" />

特点:

  • ✅ 无服务器架构
  • ✅ 自动扩展
  • ✅ 全球分布
  • 💰 按使用量付费

InMemory (测试用) ​

xml
<PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="8.0.0" />

用途:

  • ⚠️ 仅用于单元测试
  • ❌ 不模拟真实数据库行为
  • ✅ 快速执行

扩展工具包 ​

1. EFCore.BulkExtensions (批量操作) ⭐⭐⭐⭐⭐ ​

xml
<PackageReference Include="EFCore.BulkExtensions" Version="8.0.0" />

功能:

  • 批量插入/更新/删除
  • 性能提升 10-50 倍
  • 支持 SQL Server, PostgreSQL, MySQL, SQLite

示例:

csharp
await context.BulkInsertAsync(products);
await context.BulkUpdateAsync(products);
await context.BulkDeleteAsync(products);

性能对比:

普通 SaveChanges:     1000 条/秒
BulkExtensions:      50000 条/秒
提升:                50 倍

2. EFCoreSecondLevelCacheInterceptor (二级缓存) ​

xml
<PackageReference Include="EFCoreSecondLevelCacheInterceptor" Version="4.0.0" />

功能:

  • 查询结果缓存
  • 分布式缓存支持(Redis, MemoryCache)
  • 自动失效

配置:

csharp
builder.Services.AddEFSecondLevelCache(options =>
{
    options.UseMemoryCacheProvider(CacheExpirationMode.Absolute, TimeSpan.FromMinutes(10));
});

builder.Services.AddDbContext<AppDbContext>(options =>
{
    options.UseSqlServer(connectionString)
           .AddInterceptors(new EFCacheInterceptor());
});

3. Ardalis.Specification (规范模式) ​

xml
<PackageReference Include="Ardalis.Specification.EntityFrameworkCore" Version="7.0.0" />

功能:

  • 封装查询逻辑
  • 可组合的查询
  • Repository 模式集成

示例:

csharp
public class CustomerByNameSpec : Specification<Customer>
{
    public CustomerByNameSpec(string name)
    {
        Query.Where(c => c.Name.Contains(name));
    }
}

var customers = await repo.ListAsync(new CustomerByNameSpec("John"));

4. ShardingCore (分库分表) ​

xml
<PackageReference Include="ShardingCore" Version="8.0.0" />

功能:

  • 动态分表
  • 读写分离
  • 自动路由
  • 跨分片查询

适用场景:

  • 大数据量表(> 1000 万行)
  • 高并发写入
  • 多租户隔离

5. EntityFramework.Exceptions (异常处理) ​

xml
<PackageReference Include="EntityFramework.Exceptions.SqlServer" Version="8.0.0" />

功能:

  • 友好的异常消息
  • 常见错误自动检测
  • 简化错误处理

示例:

csharp
try
{
    await context.SaveChangesAsync();
}
catch (UniqueConstraintException ex)
{
    // 唯一约束违反
}
catch (CannotInsertNullException ex)
{
    // 非空约束违反
}

测试相关包 ​

1. Moq (Mocking) ​

xml
<PackageReference Include="Moq" Version="4.20.0" />

用途: Mock DbContext 和仓储接口


2. NSubstitute (替代 Moq) ​

xml
<PackageReference Include="NSubstitute" Version="5.1.0" />

优点: 更简洁的语法


3. Bogus (测试数据生成) ​

xml
<PackageReference Include="Bogus" Version="35.0.0" />

功能: 生成逼真的测试数据

示例:

csharp
var faker = new Faker<Product>()
    .RuleFor(p => p.Name, f => f.Commerce.ProductName())
    .RuleFor(p => p.Price, f => f.Finance.Amount(10, 1000))
    .RuleFor(p => p.Stock, f => f.Random.Int(0, 100));

var testProducts = faker.Generate(100);

4. Testcontainers (容器化测试) ​

xml
<PackageReference Include="Testcontainers.MsSql" Version="3.7.0" />
<PackageReference Include="Testcontainers.PostgreSql" Version="3.7.0" />

功能: 在 Docker 容器中运行真实数据库进行测试


监控与诊断包 ​

1. MiniProfiler (性能分析) ​

xml
<PackageReference Include="MiniProfiler.EntityFrameworkCore" Version="4.3.0" />

功能:

  • SQL 查询性能分析
  • 页面加载时间
  • N+1 查询检测

2. OpenTelemetry (分布式追踪) ​

xml
<PackageReference Include="OpenTelemetry.Exporter.Jaeger" Version="1.7.0" />
<PackageReference Include="OpenTelemetry.Instrumentation.EntityFrameworkCore" Version="1.0.0-beta.10" />

功能:

  • 分布式追踪
  • 性能监控
  • 与 Jaeger/Zipkin 集成

3. Sentry (错误追踪) ​

xml
<PackageReference Include="Sentry.EntityFramework" Version="4.0.0" />

功能:

  • 自动捕获异常
  • 性能监控
  • 错误聚合分析

代码生成包 ​

1. EF Core Power Tools (可视化建模) ​

安装: Visual Studio 扩展市场

功能:

  • ER 图生成
  • 逆向工程 GUI
  • 代码自定义模板

2. RevEng (命令行逆向工程) ​

xml
<PackageReference Include="EfCore.SchemaCompare" Version="8.0.0" />

功能:

  • 数据库架构比较
  • 同步脚本生成

实用工具包 ​

1. Humanizer (复数化/格式化) ​

xml
<PackageReference Include="Humanizer.Core" Version="2.14.1" />

用途:

  • 表名复数化(Product → Products)
  • 日期格式化

2. AutoMapper (对象映射) ​

xml
<PackageReference Include="AutoMapper.Extensions.Microsoft.DependencyInjection" Version="12.0.0" />

功能: Entity ↔ DTO 自动映射

示例:

csharp
CreateMap<Product, ProductDto>();
var dto = mapper.Map<ProductDto>(product);

3. MediatR (CQRS) ​

xml
<PackageReference Include="MediatR" Version="12.2.0" />

功能:

  • 命令/查询分离
  • 领域事件处理
  • 解耦业务逻辑

安全相关包 ​

1. DataProtection (数据加密) ​

xml
<PackageReference Include="Microsoft.AspNetCore.DataProtection.EntityFrameworkCore" Version="8.0.0" />

功能: 密钥持久化到数据库


2. Identity (身份认证) ​

xml
<PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="8.0.0" />

功能:

  • 用户管理
  • 角色管理
  • 密码哈希

版本兼容性参考 ​

EF Core 版本.NET 版本发布日期支持状态
8.0.x.NET 82023.11✅ LTS (至 2026.11)
7.0.x.NET 72022.11⚠️ STS (已结束)
6.0.x.NET 62021.11✅ LTS (至 2024.11)
5.0.x.NET 52020.11❌ 已结束
3.1.x.NET Core 3.12019.12❌ 已结束

建议: 新项目使用 EF Core 8.0 LTS


常用包组合 ​

Web API 项目 ​

xml
<ItemGroup>
    <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="8.0.0" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="8.0.0" />
    <PackageReference Include="EFCore.BulkExtensions" Version="8.0.0" />
    <PackageReference Include="Ardalis.Specification.EntityFrameworkCore" Version="7.0.0" />
    <PackageReference Include="AutoMapper.Extensions.Microsoft.DependencyInjection" Version="12.0.0" />
</ItemGroup>

微服务项目 ​

xml
<ItemGroup>
    <PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="8.0.0" />
    <PackageReference Include="MediatR" Version="12.2.0" />
    <PackageReference Include="OpenTelemetry.Exporter.Jaeger" Version="1.7.0" />
    <PackageReference Include="EFCoreSecondLevelCacheInterceptor" Version="4.0.0" />
</ItemGroup>

测试项目 ​

xml
<ItemGroup>
    <PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="8.0.0" />
    <PackageReference Include="Moq" Version="4.20.0" />
    <PackageReference Include="Bogus" Version="35.0.0" />
    <PackageReference Include="Testcontainers.MsSql" Version="3.7.0" />
</ItemGroup>

查找最新版本的技巧 ​

1. NuGet.org 搜索 ​

访问: https://www.nuget.org/packages?q=entityframeworkcore

2. Visual Studio NuGet 管理器 ​

右键项目 → 管理 NuGet 包 → 浏览

3. .NET CLI ​

bash
# 查看可用版本
dotnet list package --outdated

# 更新包
dotnet add package Microsoft.EntityFrameworkCore --version 8.0.0

总结 ​

必备包 TOP 10 ​

  1. Microsoft.EntityFrameworkCore - 核心库
  2. 数据库提供程序 - SqlServer/Npgsql/Pomelo
  3. Microsoft.EntityFrameworkCore.Design - 迁移工具
  4. EFCore.BulkExtensions - 批量操作
  5. Ardalis.Specification - 查询封装
  6. AutoMapper - 对象映射
  7. MediatR - CQRS
  8. Moq - 单元测试
  9. Bogus - 测试数据
  10. MiniProfiler - 性能分析

根据项目需求选择合适的包,不要过度依赖! 🚀

基于 MIT 许可发布