EF框架,认识一下!

article/2025/11/8 6:49:08

What?

EF的全称是Entity Framework,也叫实体框架。是微软以ADO.Net为基础开发出来的对象关系映射(ORM)解决方案,它解决了对象持久化问题,将程序员从编写麻烦的SQL语句当中解放出来。就是用操作对象的方式来操作数据库,自动生成与数据库表结构的映射关系。EF相当于一个中继,完成数据转换。

Why?

  1. 应用程序可以通过更加以应用程序为中心的概念性模型(包括具有继承性、复杂成员和关系的类型)来工作。
  2. 可以在不更改应用程序代码的情况下更改概念性模型与特定于存储的架构之间的映射。
  3. 应用程序不再对特定的数据引擎或存储架构具有硬编码依赖性。
  4. 开发人员可以使用可映射到各种存储架构(可能在不同的数据库管理系统中实现)的一致的应用程序对象模型。
  5. 多个概念性模型可以映射到同一个存储架构。语言集成查询支持可为查询提供针对概念性模型的编译时语法验证。

How?

使用EF进行数据库开发的时候有两个东西要建:建数据库(T_Persons),建模型类(Person)。根据这两种创建的顺序有EF的三种创建方法:
(DataBase First 简单,方便,但是当项目打了之后会非常的痛苦;Code First入门门槛高,但是适合大于大项目。Model First…基本上没有人使用)

  1. DataBase First(数据库优先):先创建数据库表,然后自动生成EDM文件,EDM文件生成类模型;
  2. Model First(模型优先):先创建Edm文件,Edm文件自动生成模型类和数据库;
  3. Code First(代码优先):程序员自己写模型类,然后自动生成数据库。没有Edm。
    当修改模型类之后,EF使用“DB Miguration” 自动帮我们更新数据库,但是这种方式只适用于项目的初始阶段不合适大项目的开发流程和优化。在初学EF阶段,我们最好禁用“DB Miguration”, 采用更实际的“手动建数据库和模型类”的方式。方便我们理解EF原理。

练习一下吧(Code First)

安装EF

添加项目——控制台应用程序
在这里插入图片描述
安装EF——程序包管理控制台——输入:Install-Package EntityFramework
在这里插入图片描述
在这里插入图片描述

App.Config 配置连接字符串

 <connectionStrings><add name="connStr" connectionString="Data Source=192.168.17.132; Initial Catalog=newssystem;User ID=sa;Password=123" providerName="System.Data.SqlClient"/></connectionStrings>

在这里插入图片描述

代码部分

实体类

namespace FluentAPI1
{public class Person{public long Id { get; set; }public string Name { get; set; }public DateTime CreateDateTime { get; set; }public int? Age { get; set; }}
}
namespace FluentAPI1
{public class Dog{public long Id { get; set; }public string Name { get; set; }}
}

实体关系映射

namespace FluentAPI1.EntityConfig
{ class PersonConfig :EntityTypeConfiguration<Person>{public PersonConfig(){this.ToTable("T_Persons");}}
}
namespace FluentAPI1.EntityConfig
{class DogConfig : EntityTypeConfiguration<Dog>{public DogConfig(){this.ToTable("T_Dogs");}}
}

数据库上下文

namespace FluentAPI1
{//DbContext是数据库上下文,定义了从实体对象到数据库的映射,从数据库中检索数据,就要使用它。class MYContext : DbContext{public MYContext():base("name=connStr"){}//DbSet:表示可用于创建,读取,更新和删除操作的实体集。public DbSet<Person> Persons { get; set; }public DbSet<Dog> Dogs { get; set; }protected override void OnModelCreating(DbModelBuilder modelBuilder){//OnModelCreating:重写此方法以进一步配置通过DbSet派生上下文中属性中公开的实体类型按惯例发现的模型。//AddFromAssembly是从某个程序集中加载所有继承自EntityTypeConfiguration类到配置中//列明映射规则base.OnModelCreating(modelBuilder);modelBuilder.Configurations.AddFromAssembly(Assembly.GetExecutingAssembly());} }
}

增删改查

static void Main(string[] args){using (MYContext ctx = new MYContext()){Person p1 = new Person();p1.Age = 18;p1.CreateDateTime = DateTime.Now;p1.Name = "EF";ctx.Persons.Add(p1);ctx.SaveChanges();//对已添加,已修改或已删除状态的实体的数据库执行INSERT,UPDATE或DELETE命令。 //两种查询的方法//1. //var persons = ctx.Persons.Where(p => p.Age > 10);//2. /*var persons = from p in ctx.Personswhere p.Age > 10select p;foreach(var p in persons ){Console.WriteLine(p);}*///删除一条数据/* var person = ctx.Persons.Where(p => p.Id == 4).SingleOrDefault();if(person==null){Console.WriteLine("已被删除");}else{ctx.Persons.Remove(person);ctx.SaveChanges();}*///删除多条数据(最保险的方法,先查在删,大量数据时候用“状态管理”)/*ctx.Persons.RemoveRange(ctx.Persons.Where(p => p.Age > 10));ctx.SaveChanges();*///更新数据var persons = ctx.Persons;foreach(var p in persons){p.Age++;}ctx.SaveChanges();Console.ReadKey();                       }}

图示
在这里插入图片描述


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

相关文章

EF框架学习分享一

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

EF框架

EF框架&#xff0c;全称Entity Framework&#xff0c;即实体框架 一、EF简介&#xff1a; 它微软提供的一种ORM工具&#xff0c;支持面向数据的软件应用程序的技术。ORM让开发人员节省数据库访问的代码时间&#xff0c;将更多的时间放到业务逻辑层代码上。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…

微信小程序图片显示模式

&#x1f40b;拿破仑曾经说过&#xff1a;“不想当将军的士兵绝不是一个好的士兵”&#xff0c;就好比如不想当架构师的程序员不是一个好的程序员。&#x1f339; &#x1f3c6;所以我的梦想是做一名技术顶尖的架构师&#xff0c;虽然遥不可及&#xff0c;但并不是不可能实现&a…

微信小程序的图片上传及图片预览功能

本文为大家分享微信小程序的图片上传及图片预览功能&#xff0c;如下图所示&#xff1a; 需求分析&#xff1a; 图片上传可以从本地图库选择也可调用相机进行拍照上传 上传完成之后图片可以进行删除、预览等功能 图片上传至服务器进行后台调用 代码实现&#xff1a; wxml文…