ORM框架之EntityFramework
1. ORM框架之EntityFramework介绍
目录
- ORM框架之EntityFramework介绍
- 1. 自我介绍
- 2. 什么是EF?
- 3. 什么是 ORM ?
- 4. EF 与 ADO.NET 有关系吗?
- 5. EF 与 ADO.NET 的对比——EF优势何在?
- 6. 世面上有哪一些 ORM 产品呢?
- 7. EF的开发模式
- 8. Entity Framework 增删改查
- 9. EF 查询相关
- 10. 结束语
1. 自我介绍
大家好!我是高堂。
作为一位伪前端程序猿,我给大家介绍一下微软的自家的 ORM框架
。
ADO.NET Entity Framework
以下简称EF
。
2. 什么是EF?
微软用来替代ADO.NET的一套 ORM 框架.
以 Entity Data Model (EDM) 为主,将数据逻辑层切分为三块,分别为 Conceptual Schema, Mapping Schema 与 Storage Schema 三层,其上还有 Entity Client,Object Context 以及 LINQ 可以使用。
EF框架
发展历史:
版本 | 支持.NET | 发布情况 | 备注 |
---|---|---|---|
EntityFramework 3.5 | 2.0+ | 包含于.NET 3.5中 | 支持EDMX生成,通过扩展可支持POCO类的生成 |
Entity Framework 4.0 | 4.0+ | 包含于.NET 4.0中 | |
Entity Framework 4.X | 可通过NuGet获取 | 支持Database First、Model First、Code First三种生成模式 | |
Entity Framework 4.5 | 4.5+ | 集成于.NET 4.5中 | |
Entity Framework 5.X | 4.5+ | 可通过NuGet获取 | 支持枚举字段,性能有较大提升,支持.NET 4.0的版本 为Entity Framework 4.4 |
EnittyFramework 6.X | 4.0+ | 可通过NuGet获取 | |
EnittyFramework 7.X | 4.6+ | 可通过NuGet获取 | 现在更名为 EntityFramework Core,结合Net Core使用,多用于跨平台 |
ADO.NET:
一般使用SQLHelper直接来操作数据库。
3. 什么是 ORM ?
ORM
=> 对象关系映射(英语:Object Relational Mapping)对于O/R,即 Object(对象)和 Relational(关系型数据),表示必须同时使用面向对象和关系型数据进行开发。
ORM框架
用途 => 为了解决 软件项目
与 数据库
打交道的中间层。
为什么需要
ORM框架
呢?
因为软件项目
是面向对象为基本原则; 而 数据库
则是从数据理论发展而来的;两套理论存在明显的的差异。
ORM框架
到底是什么呢? 我还是不太清楚!!!
ORM
其实有三大核心原则:
- 简单:以最基本的形式建模数据。
- 传达性:数据库结构被任何人都能理解的语义化文档。
- 精准性:基于数据模型创建正确标准了的结构。
简单的说 ORM
相关于中继数据。具体到产品上,例如 ADO.NET Entity Framework
实体类的属性,就算是一种中继数据。在后面我会给大家详细介绍 EF框架
。
4. EF 与 ADO.NET 有关系吗?
EF首先生成sql,再调用ado.net访问数据库,最后使结果对象具体化.
5. EF 与 ADO.NET 的对比——EF优势何在?
业务逻辑
和数据存取逻辑
分离开来;新增操作
EF:一次连接,执行多条sql;SqlHelper里使用一般写法,连接又无法释放,用using,会造成多次连接重置;更新操作
EF自动优化,只update set 有变化的字段,EF也可以很方便地只更新实体的指定属性,产生的sql语句里的set后的字段会更少;智能提示
用linq, lamda表达式 有智能提示,写错了编译不过;写sql语句字符串,调sqlhelper,sql语句写错一样编译通过;安全
省去了防止sql注入的麻烦;数据库变更
使用EF,切换较方便;效率
使用EF要比使用Ado.net开发效率高;可读性
代码的可读性更高.
6. 世面上有哪一些 ORM 产品呢?
NHibernate框架
来源于 Java 的Hibernate 框架
,采用XML文件配置的方式。Castle ActiveRecord 框架
是 Castle 中的一个子项目,底层封装了 NHibernate,改用 Attribute 来代替配置文件,这样就不用像 NHibernate 那样配置复杂的文件了。iBATIS.NET 框架
分为 DataMapper 和DataAccess两部分,DataMapper是这个框架的核心, DataMapper使用XML文件实现从实体到 SQL statements 的映射,学习起来非常简单,使用DataMapper 以后,我们可以自由的使用 SQL 语句或存储过程; DataMapper 允许我们通过一个简单的接口来操作数据,而不必了解底层实现的细节。ADO.NET Entity Framework框架
是NET开发人员的福音,微软的东西,简单,容易上手等特点。和Visual Studio
SQLServer
等软件无缝集成,作为一位 NET 阵营的 童鞋们,你们懂的!
7. EF的开发模式
从4.1版本开始,EF开始支持三种开发模式
Database First模式
我们称之为“数据库优先”,前提是你的应用已经有相应的数据库,你可以使用EF设计工具根据数据库生成数据数据类,你可以使用Visual Studio模型设计器修改这些模型之间对应关系。
Model First模式
我们称之为“模型优先”,这里的模型指的是“ADO.NET Entity Framework Data Model”,此时你的应用并没有设计相关数据库,在Visual Studio中我们通过设计对于的数据模型来生成数据库和数据类。
Code First模式
我们称之为“代码优先”模式,是从EF4.1开始新建加入的功能。使用Code First模式进行EF开发时开发人员只需要编写对应的数据类(其实就是领域模型的实现过程),然后自动生成数据库。这样设计的好处在于我们可以针对概念模型进行所有数据操作而不必关系数据的存储关系,使我们可以更加自然的采用面向对象的方式进行面向数据的应用程序开发。
8. Entity Framework 增删改查
8.1 增加对象
DbEntity db = new DbEntity();
//创建对象实体,注意,这里需要对所有属性进行赋值(除了自动增长主键外),如果不赋值,则会数据库中会被设置为NULL(注意是否可空)
var user = new User{Name = "bomo",Age = 21,Gender = "male"};
db.User.Add(user);
db.SaveChanges();
8.2 删除对象,删除只需要对象的主键
DbEntity db = new DbEntity();
//删除只需要主键,这里删除主键为5的行
var user = new User {Id = 5};
//将实体附加到对象管理器中
db.User.Attach(user);
//方法一:
db.User.Remove(user);
//方法二:把当前实体的状态改为删除
//db.Entry(user).State = EntityState.Deleted;
db.SaveChanges();
8.3 修改对象
方法一:
DbEntity db = new DbEntity();
//修改需要对主键赋值,注意:这里需要对所有字段赋值,没有赋值的字段会用NULL更新到数据库
var user = new User{Id = 5,Name = "bomo",Age = 21,Gender = "male"};
//将实体附加到对象管理器中
db.User.Attach(user);
//把当前实体的状态改为Modified
db.Entry(user).State = EntityState.Modified;
db.SaveChanges();
方法二:方法一中每次都需要对所有字段进行修改,效率低,而且麻烦,下面介绍修改部分字段
DbEntity db = new DbEntity();
//修改需要对主键赋值,注意:这里需要对所有字段赋值,没有赋值的字段会用NULL更新到数据库
var user = new User{Id = 5,Name = "bomo",Age = 21};
//将实体附加到对象管理器中
db.User.Attach(user);
http://www.taodudu.cc/news/show-3733059.html
相关文章:
- Python数据库ORM工具sqlalchemy的学习笔记
- swift3学习笔记
- 2018-2-13-win10-uwp-参考
- Direct3D学习笔记(一)——精灵(Bomo_catcher游戏)
- 钱包:BOMO 轻钱包用户手册
- mysql的longtext
- mysql和longtext
- MySQL建表时,使用longtext类型时的问题
- MySQL中字符串类型的字段最大使用longtext来存储
- mysql中查询遇到longtext类型,查询效率很低。
- 数据库查询丢失longText类型数据
- MySQL中字段类型为longtext的值导出后显示二进制串
- 解决Mysql中longtext类型字段数据丢失问题
- mysql 存储 longtext 与 longblob数据类型的区别
- navicat导出longtext类型数据乱码的解决方案
- mysql定义大字段longtxt_mysql中text,longtext,mediumtext等字段类型的意思,以及区别
- MySQL Longtext字段优化记录(一)
- mysql 的longtext类型对应java什么类型?
- gorm mysql text_Grails GORM MySQL生成TEXT或LONGTEXT列
- mysql longtext查询慢_select中的longtext使查询速度极慢
- MySql中的longtext字段的返回问题
- mysql longtext 查询_mysql中longtext存在大量数据时,会导致查询很慢?
- mysql longtext 默认_mysql+longtext+默认值
- mysql longtext 与text_mysql longtext
- MySQL优化之大字段longtext、text引发的生产问题
- 数据挖掘复习资料2021.12.15
- 数据挖掘笔记(更新中...)
- 数据挖掘——基本概念
- 从零开始的数据挖掘课复习(预习)
- 数据挖掘 笔记三
ORM框架之EntityFramework相关推荐
- java orm框架什么意思_ORM框架是什么
ORM框架是什么 对象关系映射,目前数据库是关系型数据库 ORM 主要是把数据库中的关系数据映射称为程序中的对象 目前集中常见的ORM框架 1 Nhibernate 原因:用的比较多,资料也比较好 ...
- NET主流ORM框架分析
接上文我们测试了各个ORM框架的性能,大家可以很直观的看到各个ORM框架与原生的ADO.NET在境删改查的性能差异.这里和大家分享下我对ORM框架的理解及一些使用经验. ORM框架工作原理 所有的OR ...
- Net Core下多种ORM框架特性及性能对比
在.NET Framework下有许多ORM框架,最著名的无外乎是Entity Framework,它拥有悠久的历史以及便捷的语法,在占有率上一路领先.但随着Dapper的出现,它的地位受到了威胁,本 ...
- 轻量级ORM框架 Bankinate
[前言] 前面讲过ORM的前世今生,对ORM框架不了解的朋友可以参考博文:https://www.cnblogs.com/7tiny/p/9551754.html 今天,我们主要通过设计一款轻量级的O ...
- EF 框架的简介、发展历史;ORM框架概念
一.EF 框架简介 EF 全称是 EntityFramework . Entity Framework是ADO.NET 中的一套支持开发面向数据的软件应用程序的技术,是微软的一个ORM框架. OR ...
- java orm框架 博客园_ORM框架的前世今生
目录 一.ORM简介 二.ORM的工作原理 三.ORM的优缺点 四.常见的ORM框架 一.ORM简介 ORM(Object Relational Mapping)对象关系映射,一般指持久化数据和实体对 ...
- 有哪些值得推荐的.NET ORM框架?
前言: 最近有很多同学问我.NET方面有哪些好用的ORM框架,我觉得这方面的介绍网上应该会介绍的比较全面文章,于是我想搜一篇全面的介绍文章发给他们结果我发现网上说来说去基本上就是那几个,于是就有了这篇 ...
- C#常用的几个ORM框架及简单对比
ORM => 对象关系映射(英语:Object Relational Mapping)对于O/R,即 Object(对象)和 Relational(关系型数据),表示必须同时使用面向对象和关系型 ...
- EF、Chloe、SqlSugar、DOS.ORM四种ORM框架的对比
文章目录 四种orm框架的对比 1.什么是ORM? 2.四种框架的基本信息对比如下表: 3.四种框架的耗时情况如下: 4.四种框架都支持哪些功能? 5.就个人使用而言,比较推荐哪个框架? 6.SqlS ...
最新文章
- 【cogs 309】香甜的黄油
- 修改自增主键初始化_数据库自增ID用完了会怎么样?
- 计算机管理用户和组无法访问,同一工作组无法访问如何解决【详解】
- PX Deq: Execution Msg 等待事件
- c语言 抽奖算法,腾讯2018校招笔试!抽奖算法思路c++实现!进入鹅厂真的简单!...
- 阿里云容器服务飞天敏捷版详解
- [python实现设计模式]-3.简单工厂模式-触宝开放平台
- JDK5新版RMI编程指南
- 基于国土“三调”成果的自然资源开发利用和保护的综合研究
- java+sql宿舍管理系统
- 神棍节前夕,沃商店迎来1岁生日
- WireShark教程 – 黑客发现之旅(5) – (nmap)扫描探测
- 解决Keepalived主备都含有VIP
- activemq在阿里云部署启动: java.net.UnknownHostException 异常处理
- mysql查询员工最高最低工资三种方式
- 康复医疗 趋势引领新蓝海
- win2008sever CA证书颁发服务器部署
- 子弹散射——Unity随手记(2021.2.4)
- 听李善友讲移动互联网颠覆式创新
- 沃尔玛中国前CEO陈文渊将出任百事亚太区CEO;山姆再次下调近百种畅销单品价格 | 美通企业日报...
热门文章
- astype转换数据类型
- 你想要的PDF预览新方式,微信小程序绝对不容错过
- vlanif和vlan的区别和联系
- 解决微信小程序报[ app.json 文件内容错误] app.json app.json 未找到,未找到入口 app.json 文件,或者文件读取失败,请检查后重新编译。小程序app.json报错
- 坚果投影完成6亿元D轮融资,阿里巴巴领投
- 【Tomcat】第十篇:手写嵌入式Tomcat插件(超简单)
- 12.自媒体文章-自动审核
- css3 flex的IE8浏览器兼容问题
- PDX首届区块链开发大赛火热报名中,华为P9等你拿
- 火影忍者android转ios,火影忍者手游:iOS和安卓实现大部分互通,但决斗场仍然是个痛!...