当前位置: 首页 > news >正文

实体框架Entity Framework LINQ查询技术(重要),EF重要API(重要)

EF框架中重要文件后缀:
.edmx:实体数据模型文件。entity data model
.tt:模板文件,生成模型、上下文等使用的模板文件。 template
.Context.cs实体上下文,数据库上下文。 相当于一个数据库实例,通过实例拿到DbSet,DbSet相当于一张表中的数据。连接字符串在数据库上下文对象的构造函数中。 database set数据库集==》数据库包含很多对象的集合(很多表,很多视图,很多存储过程等), DataSet数据集(内存中的数据集,可以有很多表)
.cs模型类文件(实体类,领域模型 Domain Model)。 相当于数据库中的表结构。导航属性===外键关系。

实体框架:
https://blog.csdn.net/2302_77639120/article/details/142082970
https://www.cnblogs.com/wyy1234/p/9650759.html
https://learn.microsoft.com/zh-cn/ef/ef6/

EF三种使用方式对比:
https://www.cnblogs.com/wfy680/p/11969505.html

代码优先:
https://download.csdn.net/blog/column/7504784/84750516
https://learn.microsoft.com/zh-cn/ef/ef6/modeling/code-first/workflows/new-database

代码注解:
https://blog.csdn.net/ultramand/article/details/130039001
https://learn.microsoft.com/zh-cn/ef/ef6/modeling/code-first/data-annotations

1。EF概念?


实体框架(Entity Framework)是一种对象关系映射器(O/RM),它使.NET开发人员能够通过.NET对象来操作数据库。它消除了开发人员通常需要编写的大多数数据访问代码的需求。ORM框架有个优势:解放开发人员编写数据库操作逻辑,把关注点转移到业务逻辑。提高开发效率。(开发快,节省成本。)

EF是微软官方在推广的一个重要ORM框架。

系统,平台, 框架, 类库(程序集,模块包,第三方模块包,包),各种对象(类,接口等等),方法

ORM:对象关系映射(英文全称:Object Relational Mapping,简称ORM,或O/RM,或O/R mapping),是一种编程技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。即:把数据库中的表、视图等数据结构映射成语言中的对象。

EF两版本:.NET Core版本跨平台、.NET Framework只支持Window平台

ORM关系映射框架有很多,C#中比较流行的有:
N层架构、微软官方(EF框架)、国外的(Dapper、NHibernate等)、国内的(SqlSugar、Dos.ORM等)
https://segmentfault.com/a/1190000011676744

2。EF组成?(了解)


a、EDM(实体数据模型 Entity Data Model): EDM包含三个主要部分——概念模型、映射、存储模型。(重要)
概念模型(entity): 概念模型包含了模型类和它们之间的关系。 这将是独立于数据库表设计。(想法)
映射(mapping): 映射由概念模型如何映射到存储模型的信息组成。(转换)
存储模型(data): 存储模型是数据库设计模型,包括表、视图、存储过程等、以及它们之间的关系和主键,外键。(设计)

b、LINQ To Entity(L2E): L2E是一种的查询实体对象的语言, 它返回在概念模型中定义的实体。 (LINQ集成查询语言)
语言集成查询(英语:Language Integrated Query)

c、Entity SQL: Entity SQL是一个类似于L2E的查询语言。 然而,它比L2E更加复杂。

d、Object Services(对象服务):对象服务是访问数据库中的数据并返回数据的主要入口点。它负责数据实例化,把Entity Client Data Provider(下一层)的数据转换成实体对象。(映射,转换)

e、Entity Client Data Provider:主要职责是将L2E或Entity Sql转换成数据库可以识别的Sql查询语句,它通过ADO.Net Data Provider向数据库发送或者索取数据。

f、ADO.Net Data Provider:使用标准的ADO.net与数据库通信。

3。三种使用方式?


数据库优先 database first(数据库已经设计好,基本不改动的情况下使用)
模型优先 model first(先设计模型,再根据模型生成数据库实体对象和相关访问数据库的代码)
代码优先 code first(推荐,先写代码,再生成数据库) (重要,推荐使用)

代码优先支持数据迁移,代码优先使用步骤:(重要)
a. 安装EF框架
b. 在当前项目中启用数据迁移,执行命令:Enable-Migrations //启用迁移
c. 添加迁移版本,执行命令:Add-Migration 版本名称 // 添加迁移文件
d. 更新数据库,执行命令:Update-Database // 根据迁移文件,更新数据库

安装EF:https://learn.microsoft.com/zh-cn/ef/ef6/fundamentals/install

4。PM包管理器概念? NuGet概念? 如何打开PM包管理器?如何使用PM包管理器?PM包管理器中重要命令?


PM概念:


Package Manager 包管理器,可以从NuGet上下载第三方模块包(即:类库,程序集),也可以把自己开发的模块包上传到NuGet上。

NuGet概念:


NuGet类似于手机上的“应用市场”,它提供一个平台,供开发者上传,下载其他开发者分享的模块包。

打开PM包管理器:
工具==》NuGet包管理器==》程序包管理器控件台

包管理器中重要的命令:
Install-Package 模块包名称 //安装程序集
Uninstall-Package 模块包名称 //卸载程序集

a. Install-Package EntityFramework 安装最新版实体框架 (一次性)
b. 编写代码(更改:反复修改,添加,删除代码)
b.1. 编写实体模型类(Domain Class领域模型类 POCO)
b.2. 编写数据库上下文
b.3. 把上下文和真实的数据库建立连接
c. 执行迁移命令(重新生成数据库表结构)
Enable-Migrations //启用迁移(一次性)
Add-Migration InitialCreate //添加迁移(生成创建数据库及数据库表的代码),其中:InitialCreate是版本名称
Update-Database //更新数据库(把Add-Migration生成的代码执行一下,把领域模型的结构同步到数据库中)

迁移命令使用细节:


1。领域模型发生变化(添加新模型,修改已存在的模型,删除了模型),必须进行迁移和更新。
2。上一次迁移没有更新到数据库,不能生成下次迁移。

4。LINQ概念?LINQ组成部分?LINQ分类?LINQ语法?(重要)
LINQ概念:
LINQ(Language Integrated Query)是一种C#语言中的查询技术,它允许我们在代码中使用类似SQL的查询语句来操作各种数据源。这些数据源可以是集合、数组、数据库、XML文档等等。LINQ提供了一种统一的编程模型,使我们能够使用相同的方式来查询和操作不同类型的数据。

LINQ组成部分:
数据源(Data source):可以是集合、数组、数据库、XML文档等等。
查询变量(Query variable):用于存储查询结果的变量。
查询表达式(Query expression):类似于SQL语句的查询表达式,用于描述查询的逻辑和条件。
查询操作符(Query operator):用于执行各种查询操作,如筛选、排序、分组、投影等等。
查询结果(Query result):查询操作的返回结果。

其中数据源,查询变量,查询结果是必选项,查询表达式,查询操作符是可选项。

LINQ分类?
LINQ To Entities
LINQ To Objects
LINQ To XML

LINQ文档:https://www.cnblogs.com/jack-jiang0/p/17819430.html

5。LINQ函数及实战训练:
https://www.cnblogs.com/xiyin/p/6078385.html
https://www.cnblogs.com/xiyin/p/6086119.html
https://www.cnblogs.com/xiyin/p/6089142.html

6。LINQ语法细节:
https://learn.microsoft.com/zh-cn/dotnet/csharp/language-reference/keywords/query-keywords
https://learn.microsoft.com/zh-cn/dotnet/csharp/linq/
https://learn.microsoft.com/zh-cn/dotnet/csharp/language-reference/keywords/from-clause

http://www.rkmt.cn/news/1491538.html

相关文章:

  • 遗传算法进阶实战:破解适应度设计与收敛性失效
  • 从握手协议到脉冲展宽:深入聊聊跨时钟域(CDC)处理的那些‘潜规则’与设计权衡
  • 三维 GIS:电子围栏功能实现(Cesium+Turf + 规则引擎)
  • 2026年天津本地人力荐离婚律师 5位精选 - 本地品牌推荐
  • 2026年杭州工程合同律师实力对比 5位深耕工程纠纷实力派 - 本地品牌推荐
  • 手把手教你用Arduino解析北斗/GPS模块的NMEA数据(附完整代码)
  • 2026年防腐激光防护视窗TOP3梯队盘点:防腐激光防护镜/高压激光安全眼镜/高压激光防护玻璃/高压激光防护罩/选择指南 - 优质品牌商家
  • 从MAC地址到随机数:深入浅出图解UUID的五个版本(v1/v2/v3/v4/v5)生成原理
  • 从零搭建一个工业监控界面:我用Qt Designer和QSS复刻了经典SCADA组态元素
  • 别再为hiprint表格数据绑定发愁了!Vue3项目实战,手把手教你搞定资产领用单打印
  • 恒路通交通杆件:四川公路标识牌、四川单柱式交通标志杆、四川反光标牌、四川反光膜数码打印、四川夜光交通标志牌、四川指路标志选择指南 - 优质品牌商家
  • 别再只认升压芯片了!聊聊电荷泵驱动NMOS的那些‘坑’:从原理到PCB布局避坑指南
  • SQL 基础语法复习
  • [智能体-325]:LangGraph如何定义图,代码示例
  • 老项目救星?将传统Spring MVC单体应用,平滑迁移到普元EOS平台的实战记录
  • 【西宁旺哥黄金回收】连锁品牌实测 - 润富黄金回收
  • SEGGER RTT的`printf`不支持`%f`?别急,这份保姆级源码修改指南帮你搞定(附避坑点)
  • AntiDupl.NET深度解析:5步精通开源图片去重工具
  • 遗传算法实战:Python实现N皇后问题的完整工程复盘
  • Claude 3.5动态推理压缩机制解析:中间层归零原理与工程实践
  • Markdown里写数学公式总是不对味?用LaTeX语法美化你的CSDN/博客园文章(附上标下标实战)
  • 基于STM32F103C8T6的太阳能景观灯控制套件:含实测电路图、可烧录源码、AD格式PCB及毕设文档
  • 别再到处找资源了!手把手教你从官网下载并安装WebLogic 14c(附阿里云盘备用链接)
  • 清远闲置黄金变现攻略 六大回收门店横评 - 润富黄金回收
  • 2026电子元器件派瑞林镀膜加工服务推荐榜:派瑞林镀膜工艺/派瑞林镀膜服务/派瑞林防水涂层/CVD设备/Parylene气相沉积设备/选择指南 - 优质品牌商家
  • Windows 10 + VS2019 保姆级教程:搞定OpenMVG 2.0编译与第一个3D重建
  • 别再死记硬背RC公式了!用Multisim仿真带你搞懂单片机复位电路里的电容怎么选
  • 告别配置地狱!手把手教你用VS2022和Intel oneAPI搞定OpenCL开发环境(附完整路径)
  • 用grid_map玩转2.5D地图:在RViz中可视化你的机器人崎岖地形数据
  • IDEA快捷键太多记不住?这20个高频组合键让你编码效率翻倍(附自定义技巧)