惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Schneier on Security
Schneier on Security
D
Docker
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
博客园 - 三生石上(FineUI控件)
大猫的无限游戏
大猫的无限游戏
阮一峰的网络日志
阮一峰的网络日志
博客园_首页
The GitHub Blog
The GitHub Blog
T
Tailwind CSS Blog
MongoDB | Blog
MongoDB | Blog
Blog — PlanetScale
Blog — PlanetScale
T
The Blog of Author Tim Ferriss
罗磊的独立博客
H
Help Net Security
博客园 - 聂微东
Apple Machine Learning Research
Apple Machine Learning Research
Google DeepMind News
Google DeepMind News
M
MIT News - Artificial intelligence
有赞技术团队
有赞技术团队
云风的 BLOG
云风的 BLOG
博客园 - 【当耐特】
G
GRAHAM CLULEY
S
Schneier on Security
A
About on SuperTechFans
MyScale Blog
MyScale Blog
Stack Overflow Blog
Stack Overflow Blog
T
The Exploit Database - CXSecurity.com
Y
Y Combinator Blog
C
CXSECURITY Database RSS Feed - CXSecurity.com
The Register - Security
The Register - Security
P
Proofpoint News Feed
Jina AI
Jina AI
Latest news
Latest news
T
Threat Research - Cisco Blogs
V
Visual Studio Blog
P
Privacy International News Feed
H
Hacker News: Front Page
Application and Cybersecurity Blog
Application and Cybersecurity Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
Scott Helme
Scott Helme
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
T
Threatpost
T
Tor Project blog
SecWiki News
SecWiki News
Google Online Security Blog
Google Online Security Blog
O
OpenAI News
T
Tenable Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More

博客园 - weipt

终于!我造了个「AI代驾」级别的AutoBuilder,一键干掉80%的重复CRUD工作 OpenClaw 配置飞书机器人完整指南:从零到每天定时推送天气 国产数据库私有化部署实战:PolarDB for PostgreSQL 免费容器版踩坑记 发票打印还在花钱?这款免费小工具,A4纸一半大小、自动排版,真香! 🔥 自己写的FBX转3D Tiles工具,免费!还能当模型浏览器用 相同代码在360浏览器能显示,在edge提示webgl不支持,edge下都最新的内核。 什么是技术架构、数据架构、业务架构、应用架构和代码架构? 使用pyinstaller打包的exe文件太大,怎么办 2026无人机新规正式施行!各位飞手赶紧收藏 谈谈EF的两种模式 Next.js和blazor server比较开发网站哪个好 Blazor Server和 Blazor WebAssembly区别 关于vue项目中cesium的地图显示问题 关于顺丰退出抖音电商退货业务事件的分析 在WINDOWS上创建NTP授时服务器,并验证是否可用 这样的算作“全栈技术”吗? 大疆上云APIdemo打包配置 用nssm将minio和srs注册成服务 LoRa定位技术和蓝牙AoA定位技术的关系 Mysql查询工具,你还用navcat吗? jar注册为服务的方式 nginx怎么样配置rtmp推流服务器 时间戳和时间格式互转
谈谈EF Core 微软官方的 ORM(对象关系映射)框架
weipt · 2026-01-15 · via 博客园 - weipt

Microsoft.EntityFrameworkCore(简称 EF Core)是微软官方的 ORM(对象关系映射)框架,以下是其核心用法、优点和缺点:

一、基本用法

1. DbContext 定义

public class AppDbContext : DbContext
{
    public DbSet<User> Users { get; set; }
    public DbSet<Order> Orders { get; set; }

    protected override void OnConfiguring(DbContextOptionsBuilder options)
    {
        options.UseSqlServer("ConnectionString");
    }
}

2. 实体配置

3. 基本 CRUD 操作

4. 迁移管理

二、高级特性

1. LINQ 查询

var result = await context.Orders
    .Include(o => o.User)          

2. 事务管理

using var transaction = await context.Database.BeginTransactionAsync();
try
{
    

3. 性能优化

三、主要优点

1. 开发效率高

  • 自动生成 SQL,减少手写 SQL 工作量

  • 强类型 LINQ 查询,编译时检查

  • Code First 模式支持快速迭代

2. 平台支持广泛

  • 支持 SQL Server、PostgreSQL、MySQL、SQLite 等

  • 跨平台(.NET Core/.NET 5+)

3. 功能丰富

  • 迁移管理(Migration)

  • 变更跟踪(Change Tracking)

  • 延迟加载(Lazy Loading)

  • 并发控制(Concurrency Control)

4. 集成良好

  • 与 ASP.NET Core 深度集成

  • 依赖注入支持

  • 配合 LINQ 提供强大查询能力

四、主要缺点

1. 性能问题

  • 复杂查询可能生成低效 SQL

  • 大量数据操作时性能不如 Dapper

  • N+1 查询问题需要手动优化

2. 学习曲线

  • 配置选项繁多

  • 性能调优需要深入理解

  • 迁移管理有一定复杂度

3. 灵活性受限

  • 复杂 SQL 难以表达

  • 某些数据库特性支持有限

  • 存储过程支持不如原生 ADO.NET

4. 调试困难

  • 生成的 SQL 不易调试

  • 性能问题定位复杂

  • 某些错误信息不够直观

五、使用建议

适合使用 EF Core 的场景:

  1. 业务逻辑复杂的应用

  2. 需要快速开发的项目

  3. 数据库结构频繁变更

  4. 团队熟悉 .NET 和 LINQ

不适合使用的场景:

  1. 对性能要求极高的系统

  2. 需要复杂 SQL 或数据库特性的项目

  3. 简单的 CRUD 应用(可考虑 Dapper)

  4. 已有成熟 SQL 代码需要复用

最佳实践:

  1. 对查询使用 AsNoTracking() 减少内存开销

  2. 合理使用 Include() 避免 N+1 问题

  3. 复杂查询考虑使用原始 SQL

  4. 定期分析生成的 SQL 语句

六、与 Dapper 对比

推荐选择:对于大多数企业应用,EF Core 是很好的选择。对于性能关键模块,可混合使用 EF Core + Dapper。

posted @ 2026-01-15 09:38  weipt  阅读(30)  评论()    收藏  举报