EF Core教程:从EF6到EFCore的移植与比较
需积分: 5 197 浏览量
更新于2024-07-15
收藏 9.93MB PDF 举报
"EF Core.pdf"
本文档是关于Entity Framework (EF) 的详细教程,特别是针对EF Core和EF6的对比以及如何进行迁移。Entity Framework是微软提供的一个开源的对象关系映射框架,它允许开发者以面向对象的方式操作数据库,而无需编写大量的SQL语句。
### EFCore和EF6的比较
EF Core是EF6的现代化重构版本,具有更轻量级、模块化和跨平台的特点。相比EF6,EF Core提供了更好的性能和更高的可扩展性。EF Core适用于新的.NET Core和.NET Standard项目,而EF6则更适合.NET Framework的传统应用。
#### 移植
- **基于EDMX的模型**:如果你的应用使用了EDMX文件来定义模型,移植可能涉及将模型转换为Code First方法,因为EF Core不再支持EDMX。
- **基于Code的模型**:对于使用Code First的项目,移植主要是更新NuGet包和适配API变化。
### EFCore概述
- **安装**:通过NuGet包管理器可以方便地安装EF Core。
- **第一个应用**:通常从创建DbContext开始,定义实体类和它们之间的关系。
- **版本和规划**:EF Core有明确的版本规划和路线图,包括每个版本的新增功能和重大更改。
### 查询数据
- **查询操作**:包括客户端评估、跟踪与不跟踪查询、预加载、显式加载、延迟加载等。
- **复杂查询**:支持原始SQL查询、数据库函数、用户定义的函数映射、全局查询筛选器等。
- **查询优化**:如拆分查询以减少数据库往返,处理null值比较,理解查询的工作原理以提高性能。
### 保存数据
- **基本保存**:通过DbContext的SaveChanges方法保存实体的更改。
- **相关数据**:处理一对多、多对一、多对多关系的保存,以及级联删除。
- **并发冲突**:通过并发标记(如乐观并发)解决多个用户同时编辑同一数据时的冲突。
- **事务**:在需要确保一组操作原子性的场景下,可以使用事务来保证数据一致性。
### 更改跟踪
- **追踪实体**:DbContext自动跟踪实体的状态,如添加、修改和删除。
- **更改检测**:通过属性变更或实体状态更改触发数据库更新。
- **断开连接的实体**:在非持久会话中处理实体,可能需要手动管理状态。
### 日志记录、事件和诊断
- **日志记录**:支持多种日志框架,如Microsoft.Extensions.Logging,用于记录EF Core执行的操作。
- **事件**:通过监听DbContext事件来扩展行为,例如BeforeSave和AfterSave事件。
- **诊断**:使用事件侦听器和事件计数器进行性能监控和问题诊断。
### 测试
- **测试策略**:提供了专门的测试工具和策略,以确保使用EF Core的代码能够在测试环境中正确运行。
EF Core提供了丰富的功能和灵活性,适用于各种.NET开发场景,无论是新项目还是旧项目的迁移,都能找到合适的方法来利用其优势。
2021-03-16 上传
2021-12-10 上传
2018-10-12 上传
2021-09-28 上传
2019-07-15 上传
2021-06-14 上传
2020-07-29 上传
2022-01-15 上传
海宝
- 粉丝: 0
- 资源: 3
最新资源
- 平尾装配工作平台运输支撑系统设计与应用
- MAX-MIN Ant System:用MATLAB解决旅行商问题
- Flutter状态管理新秀:sealed_flutter_bloc包整合seal_unions
- Pong²开源游戏:双人对战图形化的经典竞技体验
- jQuery spriteAnimator插件:创建精灵动画的利器
- 广播媒体对象传输方法与设备的技术分析
- MATLAB HDF5数据提取工具:深层结构化数据处理
- 适用于arm64的Valgrind交叉编译包发布
- 基于canvas和Java后端的小程序“飞翔的小鸟”完整示例
- 全面升级STM32F7 Discovery LCD BSP驱动程序
- React Router v4 入门教程与示例代码解析
- 下载OpenCV各版本安装包,全面覆盖2.4至4.5
- 手写笔画分割技术的新突破:智能分割方法与装置
- 基于Koplowitz & Bruckstein算法的MATLAB周长估计方法
- Modbus4j-3.0.3版本免费下载指南
- PoqetPresenter:Sharp Zaurus上的开源OpenOffice演示查看器