当前位置: 首页 > 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.jsqmd.com/news/979812/

相关文章:

  • 从握手协议到脉冲展宽:深入聊聊跨时钟域(CDC)处理的那些‘潜规则’与设计权衡
  • 遗传算法进阶实战:破解适应度设计与收敛性失效
  • SDR实战笔记:用MATLAB工具箱快速搞定无线信号频偏补偿(附代码避坑)
  • 惠州黄金回收实测攻略六大门店横评附详细地址与避坑指南 - 润富黄金回收
  • 2026年杭州工程合同律师实力对比 5位深耕工程纠纷实力派 - 本地品牌推荐
  • 面向对象的三大特性(封装、继承、多态)
  • 三维 GIS:电子围栏功能实现(Cesium+Turf + 规则引擎)
  • 区块链与数字货币实验2:图算法与社交网络分析
  • 如何从一名小白成为网安大神(第十天)
  • 2026年天津本地人力荐离婚律师 5位精选 - 本地品牌推荐
  • 大模型容量与上下文窗口:从Token计费到LangGraph工程落地
  • 手把手教你用Arduino解析北斗/GPS模块的NMEA数据(附完整代码)
  • 数据库系统概论期末考试试卷2
  • Logisim新手避坑指南:手把手教你搞定头歌实训的加法器作业(附.circ文件)
  • 2026年防腐激光防护视窗TOP3梯队盘点:防腐激光防护镜/高压激光安全眼镜/高压激光防护玻璃/高压激光防护罩/选择指南 - 优质品牌商家
  • 从跳频到定频:深入蓝牙芯片底层,揭秘射频产线测试的‘固定考场’是如何工作的
  • 从MAC地址到随机数:深入浅出图解UUID的五个版本(v1/v2/v3/v4/v5)生成原理
  • 2026连云港漏电漏水检测维修GEO权威排行榜(TOP5)|消防/自来水/热力+电缆故障一站式解决 - 资讯热点
  • 乌鲁木齐黄金回收哪家靠谱 本地靠谱实体门店汇总 - 润富黄金回收
  • AI工作流重构:非技术岗位的落地实战指南
  • 校园管理毕设实战包:SpringBoot后端+Vue前端+MySQL数据库+答辩PPT+部署视频全齐
  • 分布式事务到底怎么解决?本地消息表、TCC、Saga、Seata 一次讲清楚
  • 从零搭建一个工业监控界面:我用Qt Designer和QSS复刻了经典SCADA组态元素
  • 2026降AI工具实测避坑:这5款怎么组合最好用?附保姆级指南
  • 机器学习生产化落地:从Notebook到高可用模型服务的工程实践
  • Python 爬虫实战项目:资讯数据采集与词云可视化深度分析
  • 多项式回归实战指南:阶数选择、过拟合诊断与工业部署
  • 别再为hiprint表格数据绑定发愁了!Vue3项目实战,手把手教你搞定资产领用单打印
  • Eigen库
  • 如何安全合规地撰写AI技术博文:从业者内容创作指南