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的更多相关文章

  1. ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第二章:利用模型类创建视图、控制器和数据库

    在这一章中,我们将直接进入项目,并且为产品和分类添加一些基本的模型类.我们将在Entity Framework的代码优先模式下,利用这些模型类创建一个数据库.我们还将学习如何在代码中创建数据库上下文类 ...

  2. Entity Framework Core 1.1 升级通告

    原文地址:https://blogs.msdn.microsoft.com/dotnet/2016/11/16/announcing-entity-framework-core-1-1/ 翻译:杨晓东 ...

  3. Entity Framework Core 实现MySQL 的TimeStamp/RowVersion 并发控制

    将通用的序列号生成器库 从SQL Server迁移到Mysql 遇到的一个问题,就是TimeStamp/RowVersion并发控制类型在非Microsoft SQL Server数据库中的实现.SQ ...

  4. 采用MiniProfiler监控EF与.NET MVC项目(Entity Framework 延伸系列1)

    前言 Entity Framework 延伸系列目录 今天来说说EF与MVC项目的性能检测和监控 首先,先介绍一下今天我们使用的工具吧. MiniProfiler~ 这个东西的介绍如下: MVC Mi ...

  5. 来,给Entity Framework热热身

    先来看一下Entity Framework缓慢的初始化速度给我们更新程序带来的一种痛苦. 我们手动更新程序时通常的操作步骤如下: 1)把Web服务器从负载均衡中摘下来 2)更新程序 3)预热(发出一个 ...

  6. 采用EntityFramework.Extended 对EF进行扩展(Entity Framework 延伸系列2)

    前言 Entity Framework 延伸系列目录 今天我们来讲讲EntityFramework.Extended 首先科普一下这个EntityFramework.Extended是什么,如下: 这 ...

  7. Entity Framework教程(第二版)

    源起 很多年前刚毕业那阵写过一篇关于Entity Framework的文章,没发首页却得到100+的推荐.可能是当时Entity Framework刚刚发布介绍EF的文章比较少.一晃这么多年过去了,E ...

  8. Entity Framework 6 Recipes 2nd Edition 译 -> 目录 -持续更新

    因为看了<Entity Framework 6 Recipes 2nd Edition>这本书前面8章的翻译,感谢china_fucan. 从第九章开始,我是边看边译的,没有通读,加之英语 ...

  9. ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第一章:创建基本的MVC Web站点

    在这一章中,我们将学习如何使用基架快速搭建和运行一个简单的Microsoft ASP.NET MVC Web站点.在我们马上投入学习和编码之前,我们首先了解一些有关ASP.NET MVC和Entity ...

随机推荐

  1. 单个回调函数中返回多个Request以及Item

    import scrapy from myproject.items import MyItem class MySpider(scrapy.Spider): name = 'example.com' ...

  2. 移动端list布局,左边固定,右边自适应

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8&quo ...

  3. HTML5之SVG详解(一):基本概括

    转载自:http://www.cnblogs.com/hupeng/archive/2012/12/21/2828456.html 1.背景 SVG是Scalable Vector Graphics的 ...

  4. 面向对象的tab选项卡实现

    利用最基础的面向对象的思想,实现tab选项卡效果: 效果截图:

  5. (转)tableview的索引设置

    .感觉tableview的索引条将表视图往左边挤了一点?别担心,只是颜色问题.只要如此设置即可 //索引条背景的颜色(清空颜色就不会感觉索引条将tableview往左边挤) [_tableView s ...

  6. linux下面which whereis find locate的使用

    我们经常在linux要查找某个文件,但不知道放在哪里了,可以使用下面的一些命令来搜索.这些是从网上找到的资料,因为有时很长时间不会用到,当要用的时候经常弄混了,所以放到这里方便使用. which    ...

  7. pycharm设置 django模板语言

    ``` 参考:https://www.zhihu.com/question/65342278/answer/229993987 在setting-language&frameworks-pyt ...

  8. Launcher3自定义壁纸旋转后拉伸无法恢复

    MTK8382/8121平台. 描述:将自定义图片设置成壁纸后,横屏显示时,旋转为竖屏,图片由于分辨率过小,会拉伸:再旋转为横屏,拉伸不恢复. 这两天正在解这个问题,研究了很久,走了不少弯路,最后发现 ...

  9. IpmiTool常见问题解决办法

    IpmiTool常见问题解决办法 http://blog.csdn.net/c9h8o4/article/details/17138029 关于IPMI的几个问题 http://blog.csdn.n ...

  10. [转载]基于Redis的Bloomfilter去重(附Python代码)

    前言: “去重”是日常工作中会经常用到的一项技能,在爬虫领域更是常用,并且规模一般都比较大.去重需要考虑两个点:去重的数据量.去重速度.为了保持较快的去重速度,一般选择在内存中进行去重. 数据量不大时 ...