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

推荐订阅源

Stack Overflow Blog
Stack Overflow Blog
Simon Willison's Weblog
Simon Willison's Weblog
L
LINUX DO - 最新话题
T
The Exploit Database - CXSecurity.com
C
CXSECURITY Database RSS Feed - CXSecurity.com
Scott Helme
Scott Helme
L
Lohrmann on Cybersecurity
博客园 - 【当耐特】
P
Privacy & Cybersecurity Law Blog
V2EX - 技术
V2EX - 技术
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Recent Commits to openclaw:main
Recent Commits to openclaw:main
IT之家
IT之家
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Cloudbric
Cloudbric
云风的 BLOG
云风的 BLOG
K
Kaspersky official blog
T
Threat Research - Cisco Blogs
Webroot Blog
Webroot Blog
A
Arctic Wolf
C
CERT Recently Published Vulnerability Notes
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
H
Hacker News: Front Page
G
Google Developers Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
P
Proofpoint News Feed
Last Week in AI
Last Week in AI
The Hacker News
The Hacker News
MyScale Blog
MyScale Blog
Vercel News
Vercel News
B
Blog RSS Feed
F
Fortinet All Blogs
Google DeepMind News
Google DeepMind News
A
About on SuperTechFans
Microsoft Security Blog
Microsoft Security Blog
腾讯CDC
博客园 - 三生石上(FineUI控件)
D
Docker
O
OpenAI News
有赞技术团队
有赞技术团队
MongoDB | Blog
MongoDB | Blog
H
Help Net Security
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Help Net Security
Help Net Security
AI
AI
T
Tor Project blog
Project Zero
Project Zero
H
Heimdal Security Blog
Latest news
Latest news
NISL@THU
NISL@THU

博客园 - 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)  评论()    收藏  举报