Mvc+EF入门知识总结(来自传智黑马13)
一. Ef相关知识预备
1、相关知识复习
-》自动属性{get;set;}
-》隐式类型:var,dynamic
Dynamic 动态分配内存,相当于JavaScript中的var
dynamic a=10; a=”123”;
-》对象初始化器,集合初始化器
Dictionary<string,Person> dic=new Dictionary<string,Person>
{
{"a",new Person{...}},
{"b",new Person{...}}
};
-》匿名类型
成员初始化器,包括:赋值形式,标识符形式,成员访问形式
后两种被称为:投影初始化器
-》扩展方法
要求:能够手写扩展方法
优点: 可以扩展密封类型
可以扩展第三方程序集中的类型
扩展方法可以避免不必要的深度继承体系
要求:扩展方法必须在静态类中,而且该类不能是一个嵌套类
扩展方法必须是静态的
扩展方法的第一个参数必须是要扩展的类型,而且必须加上了this关键字
不支持扩展属性,事件
Public static class SuiBianQi
{
Punbic static int ToInt(this string str)
{
}
}
-》lambda表达式:委托->方法->匿名方法->lambda表达式
两个内置委托:
Action(用于无返回值的方法)
Func(用于有返回值的方法)
有了委托之后,我们可以将方法作为方法的参数进行传递
2、First Demo
-》NuGet,ORM
-》在项目中新建“实体数据模型”,根据数据库生成实体
导航属性:这个属性并不是用于描述类本身的数据成员,而是用于描述实体间的关系
-》示例:使用EF完成顾客表数据的增加、修改、删除
OjbectStateManager
例1:方法版
例2:状态版(修改整个对象,修改单个属性)Entry,State,EntityState
例3:使用导航属性完成增加
-》成员介绍:
集合属性
Set()
Entry()
-》查询:linq to entity,查询语法,方法语法
from 变量名 in 表名 where 条件 select 列名
表名.Where().Select()
基本查询
单条件查询
多条件查询
连接查询
多from查询:专用于有导航属性的查询(linq特有)
部分列查询
分页查询(lambda特有):Skip,Take
row_number()
-》终极查询:封装分页方法