随笔分类 -  904-EF

摘要:一. 开篇说明 EF的性能问题一直以来经常被人所吐槽,究其原因在于“复杂的操作在生成SQL阶段耗时长,且执行效率不高”,但并不是没有办法解决,从EF本身举几个简单的优化例子: ①:如果仅是查询数据,并不对数据进行增、删、改操作,查询数据的时候可以取消状态追踪。 ②:用什么查什么,比如一张表有100多 阅读全文
posted @ 2018-06-26 07:38 Yaopengfei 阅读(10975) 评论(26) 推荐(15) 编辑
摘要:一. 谈情怀 从第一次接触开发到现在(2018年),大约有六年时间了,最初阶段连接数据库,使用的是【SQL语句+ADO.NET】,那时候,什么存储过程、什么事务 统统不理解,生硬的将SQL语句传入SQLHelper类中,后来知道还要注意SQL注入,引入参数化的方式,现在回想一下,那个阶段简直Low到 阅读全文
posted @ 2018-06-19 07:56 Yaopengfei 阅读(11145) 评论(18) 推荐(22) 编辑
摘要:一. 简介 该章节,可以说是一个简单轻松的章节,只要你对Expression表达式树、EF的基本使用、泛型有所了解,那么本章节实质上就是一个非常简单的封装章节,便于我们快捷开发。 PS:在该章节对于EF的上下文怎么处理,怎么来的,不做介绍,在后续的框架篇将详细介绍,下面的EF上下文,将直接使用db代 阅读全文
posted @ 2018-02-06 15:37 Yaopengfei 阅读(1628) 评论(4) 推荐(0) 编辑
摘要:一. 理解并发机制 1. 什么是并发,并发与多线程有什么关系? ①. 先从广义上来说,或者从实际场景上来说. 高并发通常是海量用户同时访问(比如:12306买票、淘宝的双十一抢购),如果把一个用户看做一个线程的话那么并发可以理解成多线程同时访问,高并发即海量线程同时访问。 (ps:我们在这里模拟高并 阅读全文
posted @ 2018-02-01 15:43 Yaopengfei 阅读(3764) 评论(4) 推荐(3) 编辑
摘要:一. 简介 1. 背景: 虽然前面EF的扩展插件Z.EntityFramework.Extensions,性能很快,而且也很方便,但是该插件要收费,使用免费版本的话,需要定期更新,如果不更新,将失效,非常麻烦,这个时候SqlBulkCopy类既免费又高效,显得非常合适了。 2. 使用步骤: ①. 引 阅读全文
posted @ 2018-01-29 17:23 Yaopengfei 阅读(2571) 评论(8) 推荐(1) 编辑
摘要:一. 四种初始化策略 EF的CodeFirst模式下数据库的初始化有四种策略: 1. CreateDatabaseIfNotExists:EF的默认策略,数据库不存在,生成数据库;一旦model发生变化,抛异常,提示走数据迁移 2. DropCreateDatabaseIfModelChanges: 阅读全文
posted @ 2017-11-11 21:22 Yaopengfei 阅读(2325) 评论(3) 推荐(1) 编辑
摘要:一. 简介 1. 优先级:Fluent API > data annotations > default conventions. 2. 所有的Fluent API配置都要在 OnModelCreating这个重写方法中进行 3. 常见的配置: ① 获取表对应的配置根: var stu =model 阅读全文
posted @ 2017-11-10 19:47 Yaopengfei 阅读(1341) 评论(0) 推荐(2) 编辑
摘要:一. 简介 1. DataAnnotations说明:EF提供以特性的方式添加到 domain classes上,其中包括两类: A:System.ComponentModel.DataAnnotations命名空间下的特性是表中列的属性的。 包括:Key、Required、MinLength和Ma 阅读全文
posted @ 2017-11-10 09:58 Yaopengfei 阅读(1486) 评论(0) 推荐(0) 编辑
摘要:一. 简介 1. 正宗的CodeFirst模式是不含有edmx模型,需要手动创建实体、创建EF上下文,然后生成通过代码来自动映射生成数据库。 2. 旨在:忘记SQL、忘记数据库。 3. 三类配置:One To One(one-to-zero-or-one)、One To Many、Many To M 阅读全文
posted @ 2017-11-08 21:21 Yaopengfei 阅读(1448) 评论(0) 推荐(1) 编辑
摘要:一. 简介 【来自数据库的Code First模式】实质上并不是CodeFirst模式,而是DBFirst模式的轻量级版本,在该模式中取消了edmx模型和T4模板,直接生成了EF上下文和相应的类,该模式出现在VS2015版本以后。 该模式也是适用于数据库已经设计建好的情况。 生成的上下文和类库如下: 阅读全文
posted @ 2017-11-07 13:24 Yaopengfei 阅读(1924) 评论(0) 推荐(0) 编辑
摘要:一. 简介 顾名思义,ModelFirst是模型优先,是DBFirst的逆向模式,先建立实体数据模型,然后根据实体数据模型来生成数据库,从而驱动整个开发流程.(生成一个空的edmx文件,手动在里面建立实体模型) (1). 优点:符合当前流行的面向领域驱动设计的开发模式,可以用设计建模的思维来进行代码 阅读全文
posted @ 2017-11-04 21:06 Yaopengfei 阅读(1340) 评论(0) 推荐(0) 编辑
摘要:一. 简介 EF连接数据库有三种模式,分别是DBFirst、ModelFirst、CodeFirst,分别适用于不同的开发场景。 该章节,将主要介绍EF的DBFirst连接SQLServer数据库和MySql数据库两种操作方式 该模式在EF中出现的出现的最早,符合我们的传统开发模式,先设计数据库→然 阅读全文
posted @ 2017-11-03 22:52 Yaopengfei 阅读(3461) 评论(0) 推荐(0) 编辑
摘要:一. 简介 我们在前面章节介绍EF基本增删改的时候,曾说过EF的SaveChanges()方法,会一次性的将所有的实体的状态变化统一提交到数据库,那么你是否想过EF的实体会有哪些状态变化呢?什么原因会导致其变化呢?我们怎么来追踪EF的实体变化呢?本章节以追踪EF实体状态变化的三种方式为线索,一一介绍 阅读全文
posted @ 2017-11-03 21:35 Yaopengfei 阅读(4276) 评论(2) 推荐(2) 编辑
摘要:一. 综述 该模块主要介绍:EF的性能优化插件Z.EntityFramework.Extensions,该插件收费。 (一). 简介 1. 相关网站:http://www.zzzprojects.com/ 2. 下载途径:通过Nuget直接下载或者去官网下载(要注意更新最新版本,可能会过期) 3. 阅读全文
posted @ 2017-10-29 22:01 Yaopengfei 阅读(10295) 评论(3) 推荐(2) 编辑
摘要:一. 开发中常见的性能问题 我们在日常开发过程中,由于一些不好的习惯,经常会导致所写的代码性能低下,却毫无发觉,下面就总结一下常见的一些性能问题。 1. 真假分页 ① 假分页: db.xxx.toList().Skip(2).take(4) 。 ② 真分页:db.xxx.Skip(2).take(3 阅读全文
posted @ 2017-10-29 21:25 Yaopengfei 阅读(2002) 评论(0) 推荐(2) 编辑
摘要:一. 什么是事务 我们通俗的理解事务就是一系列操作要么全部成功、要么全部失败(不可能存在部分成功,部分失败的情况)。 举一个事务在我们日常生活中的经典例子:两张银行卡(甲、乙),甲向乙转钱,整个过程需要执行两个操作,甲账户钱减少,乙账户钱增加,这是转账成功的情况;转账失败时候,二者均不执行,甲乙账户 阅读全文
posted @ 2017-10-28 21:48 Yaopengfei 阅读(7050) 评论(1) 推荐(1) 编辑
摘要:一. 简介 上一个章节中,也介绍了立即加载和延迟加载,但上一个章节是针对单表而言的,不含外键,立即也好,延迟也好,都是指单表中的数据。但本章节重点介绍的三种加载方式均是针对含(导航属性、外键)的情况下,查询主表,从表中的数据加载情况。 下面准备两张表:Student和StudentAddress两张 阅读全文
posted @ 2017-10-26 21:52 Yaopengfei 阅读(2405) 评论(4) 推荐(5) 编辑
摘要:一. 本地缓存 从这个章节开始,介绍一下EF的一些高级特性,这里介绍的首先介绍的EF的本地缓存,在前面的“EF增删改”章节中介绍过该特性(SaveChanges一次性会作用于本地缓存中所有的状态的变化),在这里介绍一下本地缓存的另外一个用途。 ① Find方法通过主键查询数据,主键相同的查询,只有第 阅读全文
posted @ 2017-10-20 20:56 Yaopengfei 阅读(2588) 评论(0) 推荐(0) 编辑
摘要:一. 背景 上一个章节,介绍了EF调用两类SQL语句,主要是借助 ExecuteSqlCommand 和 SqlQuery 两个方法来完成,在本章节主要是复习几类存储过程的写法和对应的EF调用这几类存储过程的写法,另外介绍EF的DBFirst模式的下EF存储过程的特有写法。 本章要达到以下几个目标: 阅读全文
posted @ 2017-10-20 14:55 Yaopengfei 阅读(2352) 评论(4) 推荐(0) 编辑
摘要:一. 前言 在前面的两个章节中,我们分别详细介绍了EF的增删改的两种方式(方法和状态)和EF查询的两种方式( Lambda和Linq ),进行到这里,可以说对于EF,已经入门了,本来应该继续往下进行EF的高级属性,但本章节要打断一下,俗话所得好,“做人不能忘本”,应用到开发领域,就是“编码也不能忘本 阅读全文
posted @ 2017-10-16 20:59 Yaopengfei 阅读(6071) 评论(2) 推荐(0) 编辑