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. Grep basic and practice

    定义:Grep (Globally search for the reqular expression and print out the line). 好处:Grep 在执行时不需要先调用编辑程序, ...

  2. Java并发(7)- 你真的了解ReentrantReadWriteLock吗?

    引言 在前几篇文章中了解了ReentrantLock.Semaphore与CountDownLatch后,J.U.C包中基于AQS实现的并发工具类还剩一个比较重要的:读写锁ReentrantReadW ...

  3. 转载--博弈问题及SG函数(真的很经典)

    博弈问题若你想仔细学习博弈论,我强烈推荐加利福尼亚大学的Thomas S. Ferguson教授精心撰写并免费提供的这份教材,它使我受益太多.(如果你的英文水平不足以阅读它,我只能说,恐怕你还没到需要 ...

  4. IDEA新建时选项没有java class问题

    解决办法: 点击你的project F4打开project stucture 点击左边的module 点击右边的source后添加src就可以了  添加的src就是源码可以放置的地址

  5. 【poj1743-Musical Theme】不可重叠最长重复子串-后缀数组

    http://poj.org/problem?id=1743 这题是一道后缀数组的经典例题:求不可重叠最长重复子串. 题意: 有N(1 <= N <=20000)个音符的序列来表示一首乐曲 ...

  6. [bzoj4765]普通计算姬——分块

    Brief Description 给定一棵n个节点的带权树,节点编号为1到n,以root为根,设sum[p]表示以点p为根的这棵子树中所有节点的权 值和.支持下列两种操作: 1 给定两个整数u,v, ...

  7. [bzoj3884]上帝与集合的正确用法——欧拉函数

    题目大意 题解 出题人博客 代码 #include <bits/stdc++.h> using namespace std; const int M = 10001000; int phi ...

  8. App云测试平台免费功能汇总

    Wetest  http://wetest.qq.com 阿里云测 https://mqc.aliyun.com/ Testbird  https://www.testbird.com/ 百度 htt ...

  9. requests-html的js执行功能简单使用

    #!/usr/bin/env python # encoding: utf-8 import asyncio from requests_html import HTMLSession import ...

  10. 重启nginx后丢失nginx.pid,如何重新启动nginx

    http://blog.csdn.net/llnara/article/details/8691049 一句话结论: /alidata/server/nginx/sbin/nginx -c /alid ...