学完EF后的一些笔记

2 篇文章 0 订阅

数据库上下文操作类
用于识别和追踪业务实体的变更,是数据访问操作的入口。
EF执行添加操作
利用命名空间using ch3.models
利用对象初始化器新建一个对象
利用using语句新建一个上下文对象
db。实体。add(对象)
db.savechanges()
using(){}语句可释放对该对象占用的资源

find()参数放的是主键,返回的的是一个对象
参数的类型和主键的数据 类型保持一致

多表查询 三种方法
DAL List

  1. 实体类多加字段
  2. 增加类 // 分页查询
  3. 导航属性

延迟加载:EF默认的是改方式
只在需要的时候加载数据,当对象使用时,再去数据库加载。
会多次访问数据库。

关闭延迟加载:
1.对特定的导航属性去掉virtual
2.对所有的导航属性,设置LazyLoadingEnable = false;
在上下文操作对象中:this.Configuration.LazyloadingEnable = false

贪婪加载:
一次性把所有的数据都加载进来,用include()方法
访问一次数据库。
所有的数据都有。数据过多

如果要访问所有的数据,可以用贪婪加载。如果不经常访问导航属性,或只访问部分,可以使用延迟加载。

显示加载
与延迟加载有点类似,分多次访问数据库。访问导航属性加载数据使用Load()方法;关闭了延迟加载
Collection()返回实体集合 老师-》详情
Reference()返回的单个实体对象 详情-》老师的名字

1.隐式类型:用var进行声明,用右边的值来确定数据的类型
注意:局部推断类型 1.只能为局部变量 2.类型在赋值后就确定了

2.匿名类型: 属性的顺序和数量要保持一致则该匿名类型可视为同一类型。

委托:类型化的函数指针。(将方法作为参数传递)
使用场景:将方法作为参数进行传递

程序设计原则之一:OCP原则(开闭原则)
允许你扩展,不允许修改

扩展方法:
不改变原数据类型添加一个静态方法(向下的箭头)
步骤: 1.定义一个静态类
2.在该类中定义一个静态方法,方法的第一个参数以this开头
3.直接调用即可
4.yield 关键字:迭代返回
1.经常与return 或break;
2.只能使用在返回类型必须为IEnumerate、IEnumerate、IEnumerator或IEnumerator
的方法,运算符、get访问器中。

5.Lambda表达式是一个匿名方法。由三部分组成:形参列表=>(gose to)方法体
1.参数数量必须与委托类型包含的参数数量相同,同时参数可以隐式转换成委托的参数类型,
也要可以转换成委托的返回类型。
2.形参列表是0个,形参列表用()表示()=>{cw()}
3.形参列表只有1个,形参列表的()可以省略。 x=>x*2;
4.如果方法体只有一行,方法体可以省略{},return, ;

Linq查询语法:

1.LINQ:语言集成查询,可以跨数据源和数据格式完成查询。
1) Linq to object
2)Linq to XML
3)Linq to ADO.NET (SQL\DataSet\Entities)

2.Linq 查询表达式必须以from开头,以select或group by结尾。
只有实现了IEnumerable接口的数据源才可执行Linq查询

3.Linq查询的查询步骤
1)创建数据源 2)创建查询 3)执行查询

Linq 关键字:
from 指定范围变量和数据源
where 根据bool表达式从数据源中筛选数据
select 指定查询结果中的元素所具有的类型或表现形式
group 对查询结果按照键/值执行分组
into 提供一个标识符,它可以充当对join、group或select子句结果的引用
orderby 对查询出的元素执行排序(ascending/descending)
join 按照两个指定匹配条件对等连接两个数据源
let 产生一个用于存储子表达式查询结果的范围变量

//from[type] id in source
//[join[type] id in source on expr equals expr[into subGroup]]
//[from[type] id in source | let id = expr | where condition]
//[orderby ordering, ordering, ordering…]
/lect expr | group expr by key
//[into id query]

from id in source
[join id2 in source on id.* equals id2.*][into g]
[let 变量名= 表达式]|[where 条件]
[orderby *]
select 变量 | group变量 by

4.Linq的查询分为:查询语法 方法语法。

Linq方法语法:
var query = db.tb_stu.OrderBy(p => p.degreeID)
.Join(db.tb_degree, s => s.degreeID, d => d.degreeID, (s, d) =>
new { s.stuName, d.degreeName, s.degreeID });

linq聚合操作:只能在linq方法语法中用

5.方法语法的实质是扩展方法和Lambda表达式结合的查询聚合函数的操作只能用方法语法。(单个数值)

  1. CAST()强制转换类型
    OfType() 筛选指定类型
    ToList() 序列化集合(此时该查询已执行)

1.HttpModule对象:
1)是Http请求的必经之路
2)可以有多个HttpModule对象
3)定义一个类,继承IHttpModule接口
4)HttpModule对象执行顺序与其注入顺序有关WebConfig
HttPApplication app = sender as HttpApplication; 直接与HTTPApplication对象

2.HttpHandler对象
1)是Http请求的最终处理中心
2)只能有一个
3)实现方式有两种:一般处理程序.ashx、自定义类继承接口IHttpHandler

  1. 窗体:当我们需要页面展示的时候 html =》aspx
    HttpHandler: 当我们不需要去展示页面,只需要数据处理 (WebAPI)
    一般处理程序:不需要约定请求的扩展名
    自定义: 需要约定请求的扩展名

1。URL重写的好处:
1)将动态链接转成静态链接, 使网页在搜索结果中排名靠前
2)隐藏网页的实现技术,增强网站的安全性。
3)提高网站的可用性和专业性。
4)使URL支持可删减的需求。

2.使用HttpModule进行URL重写的步骤:

  1. 创建一个类,继承lHttpModule接口, 实现方法。
    2)在Init()注册BeginRequest事件。
    3)获取URL (RawURL)
    4)定义正则表达式=》URL
    5)判断是否需要重写Server.transfer ()_ 跳转页面

3.使用URLRewriter.dll重写URL只需要配置web.config
注意:&->&
&1->()参数

4.页面静态化处理的三种方式:
1)伪静态
2)折中法
3)真静态

URL重写 HttpModule
防盗链 验证码 水印 HttpHandler

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Juryggs

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值