NET EF框架

article/2025/11/8 1:40:41

EF 框架是微软的.NET中ORM(对象关系映射)框架。

在没有EF框架之前,我们是直接与ADO.Net 进行交互来访问数据库,在SqlHelper 里面面通过设置connection ,command ,dataset,datareader等来与数据库交互,这样的话使得我们开发人员把很多精力放在了管理数据访问的ADO.NET 代码上,但是在EF 框架中把这块代码进行了封装,开发人员直接通过实体类来完成对数据库的操作。 
在EF框架中把数据库中的关系表对应到了程序中的实体类,把数据表中的字段对应成了实体类中的属性,这就是对象关系映射,

那为什么要用ORM框架呢?

EF为我们现有的数据库创建数据访问类,以便我们可以直接使用这些类与数据库交互,而不是直接与ADO.Net交互。

EF三种模式

  • DataBase First
  • Model First
  • CodeFirst

  DataBase First传统的表驱动方式创建EDM,然后通过EDM生成模型和数据层代码。除生成实体模型和自跟踪实现模型,还支持生成轻型DbContext。

  Model First先创建EDM模型,再生成DDL数据库脚本和模型和数据层代码。除生成实体模型和自跟踪实现模型,支持生成轻型DbContext。

  Code First手动创建POCO模型,数据层DbContext及映射关系,通过Database.SetInitializer生成数据库,这种方式较灵活,但是代码工作较多。

EF 框架详解:

实体框架整体架构: 
这里写图片描述

架构组件: 
EDM(实体数据模型): EDM由三个主要部分组成 - 概念模型,映射和存储模型。 
Conceptual Model:概念模型包含模型类及其关系。这将独立于您的数据库表设计。 
Storage Model:存储模型是包括表,视图,存储过程及其关系和密钥的数据库设计模型。 
Mapping:映射由有关概念模型如何映射到存储模型的信息组成。 
LINQ to Entities: LINQ to Entities是一种用于针对对象模型编写查询的查询语言。它返回在概念模型中定义的实体。你可以在这里使用你的LINQ技能。 
Entity SQL:实体SQL是另一种查询语言(仅适用于EF 6),就像LINQ to Entities一样。然而,这比L2E稍微难一些,开发者需要单独学习。 
ObjectServices:对象服务是访问数据库中的数据并将其返回的主要入口点。对象服务负责实现,这是将从实体客户端数据提供者(下一层)返回的数据转换为实体对象结构的过程。 
Entity Client Data Provider:此层的主要职责是将LINQ-to-Entities或实体SQL查询转换为底层数据库可以理解的SQL查询。它与ADO.Net数据提供者通信,而ADO.Net数据提供者又从数据库发送或检索数据。 
ADO.Net Data Provider:该层使用标准的ADO.Net与数据库进行通信。

EF 框架如何运作: 
EF框架的功能: 
将实体类映射到数据库模式 
将linq 查询翻译并执行到sql 
跟踪实体在其生命周期内发生的变化,并将更改保存到数据库。

实体数据模型: 
EF 的第一个功能就是建立一个实体数据模型(EDM).EDM 在上面也提到过,主要包括概念模型,存储模型以及概念和存储之间的映射。EF使用此EDM执行CRUD操作。它使用EDM从LINQ查询构建SQL查询,构建INSERT,UPDATE和DELETE命令,将数据库结果转换为实体对象。

这里写图片描述

查询 
EF 使用EDM将LINQ-to-Entities查询转换为关系数据库的SQL查询,并将结果转换回实体对象。 
这里写图片描述

保存 
当调用SaveChanges()方法时,EF根据实体的状态推断INSERT,UPDATE和DELETE命令。ChangeTrack跟踪每个实体的状态,以及何时执行任何操作。 
这里写图片描述

 


http://chatgpt.dhexx.cn/article/gV9qXtpG.shtml

相关文章

EF框架的优点是什么?

Entity Framework 应用程序有以下优点: 1、应用程序可以通过更加以应用程序为中心的概念性模型(包括具有继承性、复杂成员和关系的类型)来工作。 2、应用程序不再对特定的数据引擎或存储架构具有硬编码依赖性。 3、可以在不更改应用程序代码的情况下更改概念性模…

EF框架,认识一下!

What? EF的全称是Entity Framework,也叫实体框架。是微软以ADO.Net为基础开发出来的对象关系映射(ORM)解决方案,它解决了对象持久化问题,将程序员从编写麻烦的SQL语句当中解放出来。就是用操作对象的方式来…

EF框架学习分享一

一、什么是EF框架和ORM框架 ? EF 全称是 EntityFramework 。Entity Framework是ADO.NET 中的一套支持开发面向数据的软件应用程序的技术,是微软的一个ORM框架。 ORM框架(Object Relational Mapping) 翻译过来就是对象关系映射。 二、EF实体框…

EF框架

EF框架,全称Entity Framework,即实体框架 一、EF简介: 它微软提供的一种ORM工具,支持面向数据的软件应用程序的技术。ORM让开发人员节省数据库访问的代码时间,将更多的时间放到业务逻辑层代码上。EF提供变更跟踪、唯…

微信小程序开发——上传图片

功能描述 1.拍摄或从手机相册中选择图片上传。 2.chooseImage(e) 中的index用于判断是新增图片还是替换图片。 3.delImage(e) 删除当前index索引下的数据。 wx.chooseMedia(Object object) 属性类型默认值必填说明countnumber9否最多可以选择的文件个数mediaTypeArray.<…

微信小程序图片下边加文字组合

图片下边加文字组合 简介 我们在开发程序的时候&#xff0c;很大情况会用到图片下边加文字的组合&#xff0c;因为好看又实用&#xff0c;所以在此记录一下给大家。 效果图 代码 wxml <view class"view_saoyisao"><image class"image_saoyisao&qu…

微信小程序剪切图片的功能

全平台&#xff08;Vue、React、微信小程序&#xff09;任意角度旋转 图片裁剪组件 | 微信开放社区 Simple-Crop/USAGE-wechat.md at master newbieYoung/Simple-Crop GitHub 首选下载下来wechat这个文件夹。放在小程序的components里面 把它放做一个组件来用啦.我把这个文件…

微信小程序 图片显示不出来的问题 100%管用

相信大多数微信小程序的开发者都会遇到的一个问题就是图片在模拟器上能显示 跑到真机上就不行&#xff0c;而且ios能显示安卓却显示不了的问题&#xff0c;这个问题也是困扰了我很久&#xff0c;最终想到了解决方案。 大多数情况下 都是后端返回一个url地址然后我们再拿基准…

微信小程序 背景图片设置

微信小程序设置背景图片时&#xff0c;有两种方法&#xff1a; 第一&#xff1a;直接在.wxss中中使用 “background-image:url()” 设置背景图片&#xff0c;但是这种加载背景图片的方法存在一个问题&#xff0c;就是所加载的图片只能是网络图片或base64图片&#xff0c;是不可…

微信小程序图片的垂直和水平居中,line-height无效,使用flew布局

微信小程序中&#xff0c;图片的完全居中显示&#xff0c;line-height并不能发挥效果&#xff0c; line-height可以时内部文字垂直居中显示&#xff0c;但是对于图片并未发挥效果 如图&#xff1a; 不过&#xff0c;水平居中显示&#xff0c;可以使用 text-align:center 解决方…

微信小程序 图片处理的几个样式

每天记录一点对自己来说的新内容。 1、外层包裹的view标签显示边框 示例&#xff1a; 样式&#xff1a; .viewborder {border: 3px solid #f1bb69;border-radius: 10rpx;padding: 10rpx;margin: 10px; } 2、图片边框阴影效果 示例&#xff1a; 样式&#xff1a; .icon {wi…

解决微信小程序图片上传点击无反应问题

解决微信小程序图片上传点击无反应问题 背景原因 背景 在微信小程序webView中使用mand-mobile或vant图片上传组件点击无反应&#xff0c;无法进行图片上传。 原因 微信小程序WebView中不支持input标签multiple属性&#xff0c;该属性是支持多文件上传属性&#xff0c;解决此…

微信小程序图片上传一直loading中,上传没反应

问题&#xff1a; 前端使用小程序自带的上传api,即wx.chooseImage和wx.uploadFile&#xff1b;直接上传到公司后端服务器里&#xff08;注不是上传到阿里云&#xff09;&#xff0c;问题是wx.chooseImage成功了&#xff0c;但是wx.uploadFile就是没有成功。 解决&#xff1a;…

uniapp开发微信小程序图片拉伸问题

今天开发微信小程序的时候&#xff0c;发现我的图片被拉伸了 如何解决图片拉伸的问题 在uniapp中的image中有一个mode属性&#xff0c;去设置就好了 注意 src 仅支持相对路径、绝对路径&#xff0c;支持 base64 码 mode的属性值有很多 我简单的给大家列出来几种 scaleToFi…

微信小程序图片上传uploadfile失败

场景一&#xff1a;开发者工具可上传&#xff0c;手机端不可以 问题定位&#xff1a;开发者工具返回http://&#xff0c;手机端返回wxfile:// 解决方式&#xff1a;由后端写上传图片的接口 场景二&#xff1a;调试模式可以上传&#xff0c;非调试模式不可以 问题定位&#xff…

解决微信小程序图片过大上传失败问题

方法一 将图片传入网络相册&#xff08;如QQ空间&#xff09;&#xff0c;右键获取图片url 缺点&#xff1a;有可能会降低图片清晰度 wxml : <image src"url" mode"aspectFit"></image> 方法二 使用微信云服务 点击微信云服务 点击存储&am…

微信小程序图片底部留白的问题

先说下&#xff0c;我前端经验不丰富。找了几个网上的例子&#xff0c;根据例子&#xff0c;实验得到解决方案如下。 1、将包裹的view增加display属性。值&#xff1a;display。 2、将image设置为垂直对齐模式。vertical-align:top&#xff0c;因为图片是要占满整个水平宽度的…

简单实用,微信小程序图片预览功能实现

前言 随着微信小程序在手机上的普及&#xff0c;大家对其实用性也越来越追求。其中&#xff0c;图片预览功能的实现&#xff0c;更是备受青睐&#xff0c;它能够更直观的看到图片原本的细节&#xff0c;是非常实用的小功能。本文将针对微信小程序实现图片预览作为主题&#xff…

微信小程序 图片显示不完全

<image :src"pic" mode"widthFix"></image> https://developers.weixin.qq.com/miniprogram/dev/component/image.htmlhttps://developers.weixin.qq.com/miniprogram/dev/component/image.html

微信小程序图片宽高自适应

微信小程序<image>有默认的宽高width:320rpx;height:240rpx;只设置width&#xff1a;100%是无效的&#xff0c;即使写了height&#xff1a;100%&#xff0c;依然无效 只要在<image>标签添加mode"widthFix"属性&#xff0c;就可以做到高度自适应&#xf…