【EF框架】聊一聊EF框架,简述java编译原理

==

EF框架的全称EntityFramework ,Entity Framework是ADO.NET 中的一套支持开发面向数据的软件应用程序的技术,是微软的一个ORM框架。

叙述

==

ORM


ORM是一种将数据从域对象存储到关系数据库(如MS SQL Server)的工具,以自动化的方式,无需太多编程。O / RM包括三个主要部分:域类对象,关系数据库对象和有关域对象如何映射到关系数据库对象(表,视图和存储过程)的映射信息。ORM允许我们将我们的数据库设计与我们的域类设计分开。这使得应用程序可以维护和扩展。它还自动执行标准的CRUD操作(创建,读取,更新和删除),以便开发人员不需要手动编写。

EF框架


EF框架是一个对象/关系映射(O/RM)框架。这是ADO.NET的一个增强,它为开发人员提供了访问和存储数据库数据的自动化机制。

EF架构的组件


我们来看一下EF框架的整体架构,看一下EF架构都有哪些组件。

1、EDM(实体数据模型): EDM由三个主要部分组成 - 概念模型,映射和存储模型。

2、概念模型(Conceptual Model):概念模型包含模型类及其关系。这将独立于您的数据库表设计。

3、存储模型(Storage Model):存储模型是包含表,视图,存储过程及其关系和关键的数据库设计模型。

4、映射(Mapping):映射由有关概念模型如何映射到存储模型的信息组成。

5、LINQ to Entities: LINQ to Entities是一种用于针对对象模型编写查询的查询语言。它返回在概念模型中定义的实体。你可以在这里使用你的LINQ技能。

6、实体SQL(Entity SQL):实体SQL是另一种查询语言,就像LINQ to Entities一样。

7、对象服务(Object Service):对象服务是访问数据库中的数据并将其返回的主要入口点。对象服务负责实现,这是将从实体客户端数据提供者(下一层)返回的数据转换为实体对象结构的过程。

8、实体客户端数据提供者(Entity Client Data Provider):此层的主要职责是将L2E或实体SQL查询转换为底层数据库可以理解的SQL查询。它与ADO.Net数据提供者通信,而ADO.Net数据提供者又从数据库发送或检索数据。

9、ADO.Net数据提供程序(ADO.Net Data Provider):该层使用标准的ADO.Net与数据库进行通信。

EF加载方式


延迟加载

延迟加载又叫惰性加载(Lazy Loading):即在需要或者使用的时候加载数据。默认情况下,EF会使用延迟加载方式加载数据。延迟加载意味着延迟加载相关数据,直到您明确请求为止。例如,Student类包含StudentAddress作为复杂属性。因此,上下文首先加载数据库中的所有学生,然后在我们访问StudentAddress属性时加载特定学生的地址,如下所示。

using (var ctx = new SchoolDBEntities())

{

//Loading students only

IList studList = ctx.Students.ToList();

Student std = studList[0];

//延迟加载:用的时候加载

StudentAddress add = std.StudentAddress;

}

上面显示的代码将导致两个SQL查询。首先,它会获取所有的学生:

SELECT

[Extent1].[StudentID] AS [StudentID],

[Extent1].[StudentName] AS [StudentName],

[Extent1].[StandardId] AS [StandardId]

FROM [dbo].[Student] AS [Extent1]

然后,当我们获得StudentAddress的引用时,它将发送以下查询:

exec sp_executesql N’SELECT

[Extent1].[StudentID] AS [StudentID],

[Extent1].[Address1] AS [Address1],

[Extent1].[Address2] AS [Address2],

[Extent1].[City] AS [City],

[Extent1].[State] AS [State]

FROM [dbo].[StudentAddress] AS [Extent1]

WHERE [Extent1].[StudentID] = @EntityKeyValue1’,N’@EntityKeyValue1 int’,@EntityKeyValue1=1

但是,您也可以关闭特定属性或整个上下文的延迟加载。要关闭特定属性的延迟加载,请不要使其变为虚拟。要关闭上下文中所有实体的延迟加载,请将其配置属性设置为false:

using System;

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
img

面试资料整理汇总

成功从小公司跳槽进蚂蚁定级P7,只因刷了七遍这些面试真题

成功从小公司跳槽进蚂蚁定级P7,只因刷了七遍这些面试真题

这些面试题是我朋友进阿里前狂刷七遍以上的面试资料,由于面试文档很多,内容更多,没有办法一一为大家展示出来,所以只好为大家节选出来了一部分供大家参考。

面试的本质不是考试,而是告诉面试官你会做什么,所以,这些面试资料中提到的技术也是要学会的,不然稍微改动一下你就凉凉了

在这里祝大家能够拿到心仪的offer!

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
img

资料中提到的技术也是要学会的,不然稍微改动一下你就凉凉了

在这里祝大家能够拿到心仪的offer!

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-j9AZCsyf-1712684153599)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值