Entity Framework part1
First Demo
实体框架Entity Framework,简称EF
EF是微软推出的基于Ado.Net的数据库访问技术,是一套ORM框架
底层访问数据库的实质依然是ado.net
是一套orm框架,即框架中包含了实例模型、数据模型、映射关系三部分
上下文类DbContext:内部封装了ado.net操作,用于对数据进行crud
子上下文类的属性,其实就是一个集合,可以通过父类中的DbSet<>属性获得,利于编写抽象代码
回顾查询语句执行顺序
()SELECT ()DISTINCT ()<Top Num> <column>()FROM [left_table]()<join_type> JOIN <right_table>() ON <join_condition>)WHERE <where_condition>()GROUP BY <group_by_list>()WITH <CUBE | RollUP>()HAVING <having_condition>()ORDER BY <order_by_list>
分页查询:Skip、Take(仅lambda,一定要先排序后使用此方法,lambda特有)
对于一个命令语句,可以将查询语法、方法语法混合使用
返回值:IQueryable<T>类型
新建实体数据模型,介绍生成的类型
目标:完成增加、修改、删除操作
增加:Add()
修改:AddOrUpdate()
删除:Remove();参数为一个对象,所以要先查找
方法SaveChanges():在完成增加、修改、删除、操作后,一定要调用此方法,将改变进行保存
导航属性
导航属性:当两张表有关系时,根据关系会在模型中生成相应的属性
如果是1的关系,则生成的是对应类型的属性
如果是n的关系,则生成的是ICollection<对应类型>的属性
延迟加载
进行查询时,只是将查询的命令进行拼接,构建命令树,并不会立即执行查询操作,在实际使用数据时才会执行查询返回结果
返回类型为IQueryable<T>或IEnumerable<T>
区别:
IQueryable<T>可以拼接命令树,即所有命令会构成一条sql执行
IEnumerable<T>不会拼接命令树,即只有第一个语句构成sql语句,然后把结果加载到内存中,再进行进一步筛选
使用AsQueryable()可以将查询结果转换成IQueryable<T>类型
使用AsEnumerable()可以将查询结果转换成Ienumerable<T>类型
集合类型的导航属性也采用延迟加载
禁用延迟加载
如果查询结果是个集合,在查询语句的结尾调用LoList()方法
如果查询结果是单个值,在查询语句的结尾调用FirstOrDefault()方法
对于导航属性,可以在查询结果上使用Include()方法
优点:用的时候才请求数据库获取数据,可以实时获得数据,适用于数据变化大的情况
缺点:每次用数据时才发出一次请求,增加了数据库的压力,对于数据变化小的情况不适用
Entity Framework part1的更多相关文章
- ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第二章:利用模型类创建视图、控制器和数据库
在这一章中,我们将直接进入项目,并且为产品和分类添加一些基本的模型类.我们将在Entity Framework的代码优先模式下,利用这些模型类创建一个数据库.我们还将学习如何在代码中创建数据库上下文类 ...
- Entity Framework Core 1.1 升级通告
原文地址:https://blogs.msdn.microsoft.com/dotnet/2016/11/16/announcing-entity-framework-core-1-1/ 翻译:杨晓东 ...
- Entity Framework Core 实现MySQL 的TimeStamp/RowVersion 并发控制
将通用的序列号生成器库 从SQL Server迁移到Mysql 遇到的一个问题,就是TimeStamp/RowVersion并发控制类型在非Microsoft SQL Server数据库中的实现.SQ ...
- 采用MiniProfiler监控EF与.NET MVC项目(Entity Framework 延伸系列1)
前言 Entity Framework 延伸系列目录 今天来说说EF与MVC项目的性能检测和监控 首先,先介绍一下今天我们使用的工具吧. MiniProfiler~ 这个东西的介绍如下: MVC Mi ...
- 来,给Entity Framework热热身
先来看一下Entity Framework缓慢的初始化速度给我们更新程序带来的一种痛苦. 我们手动更新程序时通常的操作步骤如下: 1)把Web服务器从负载均衡中摘下来 2)更新程序 3)预热(发出一个 ...
- 采用EntityFramework.Extended 对EF进行扩展(Entity Framework 延伸系列2)
前言 Entity Framework 延伸系列目录 今天我们来讲讲EntityFramework.Extended 首先科普一下这个EntityFramework.Extended是什么,如下: 这 ...
- Entity Framework教程(第二版)
源起 很多年前刚毕业那阵写过一篇关于Entity Framework的文章,没发首页却得到100+的推荐.可能是当时Entity Framework刚刚发布介绍EF的文章比较少.一晃这么多年过去了,E ...
- Entity Framework 6 Recipes 2nd Edition 译 -> 目录 -持续更新
因为看了<Entity Framework 6 Recipes 2nd Edition>这本书前面8章的翻译,感谢china_fucan. 从第九章开始,我是边看边译的,没有通读,加之英语 ...
- ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第一章:创建基本的MVC Web站点
在这一章中,我们将学习如何使用基架快速搭建和运行一个简单的Microsoft ASP.NET MVC Web站点.在我们马上投入学习和编码之前,我们首先了解一些有关ASP.NET MVC和Entity ...
随机推荐
- es6+最佳入门实践(14)
14.模版字符串 模版字符串(template string)是增强版的字符串,定义一个模版字符串需要用到反引号 let s = `这是一个模版字符串` console.log(s) 14.1.模版字 ...
- 转:Linux下使用Nginx搭建简单图片服务器
最近经常有人问图片上传怎么做,有哪些方案做比较好,也看到过有关于上传图片的做法,但是都不是最好的,今天再这里简单讲一下Nginx实现上传图片以及图片服务器的大致理念. 如果是个人项目或者企业小项目,仅 ...
- saltstack入门至放弃之salt安装部署
学习了一段时间的saltstack,是时候记录下了.友提:学习环境是两台centos_7.2_x64机器 系统初始化: 两台机器执行以下脚本即可(友提:两台服务器的主机名配置在/etc/hosts中, ...
- Opencv 学习笔记之——鼠标,进度条操作
Opencv中提供一个鼠标调用的函数,SetMouseCallback()函数,它配合一个回调函数来实现鼠标操作的功能. 首先看一下SetMouseCallback的函数原型: c++: void ...
- Google Breakpad: 实战crash .
Google Breakpad: 实战crash . http://blog.csdn.net/zm_21/article/details/24795205 C/C++程序最棘手的时候就是一个字“挂” ...
- 【luogu2574】xor的艺术
一道无聊的线段树题,写着玩玩而已…… #include<bits/stdc++.h> #define N 1000010 #define lson (o<<1) #define ...
- 串行写队列的MYSQL大文本参数
public void AsyncWriteDataBase() { var spName = ""; while (true) { try { var jsonText = Re ...
- hdu5790
都快忘了在这类题的经典做法了…… 将字符串一个个的插入字典树,在字典树维护好有该前缀串s的最大编号字符串j,我们记作j控制了前缀串s 对于当前的第i个字符串,维护此时有当前每个字符串控制了多少个前缀串 ...
- AC日记——[JSOI2008]火星人prefix bzoj 1014
1014 思路: 平衡树+二分答案+hash: 好了懂了吧. 代码: #include <cstdio> #include <cstring> #include <ios ...
- 只用120行Java代码写一个自己的区块链-2网络
已经看完第一章的内容了吗,欢迎回来. 上一章我们介绍了关于怎么去编写自己的区块链,完成哈希和新块的校验.但是它只是在一个终端(结点)上跑.我们怎么样来连接其他结点以及贡献新的块呢,怎么样广播到其他结点 ...