前言:EF框架被称为是企业级应用框架的最佳选择,以前只是知道,一直没有学习过,这次跟着老马学习一下,顺便分享一下我的学习笔记和一些学习心得,和往常的写博客一样,下面我就先介绍一下在学习EF框架之前的准备工作吧。
1.知识准备
(1) 自动属性
1) 自动属性(Auto-Implemented Properties)。
2) 自动属性简化了我们在.NET的时候手写的一堆私有成员+属性的编程方式,我们只需要使用如下方式声明一个属性,编译器会自动生成所需要的成员变量。
3) 代码举例:
public class User
{
public int ID{get;set;}
public string Name{get;set;}
public int Age{get;set;}
}
(2)隐式类型var
1) 这个名称可能对我们不是很陌生,但是var这个关键字应该都用过,在C#中使用var声明一个对象的时候,编译器会自动根据其赋值语句推断出这个局部变量的类型,赋值以后,这个变量的类型也就确定而不可以再进行更改,另外var关键字也用于匿名类的声明
2) 应用场合:var主要用途是表示一个Linq查询的结果,这个结果可能是ObjectQuery<>或者IQueryable<>类型的对象,这时候使用var声明这个对象可以节省很多代码书写上面的时间。
3) 代码举例:
var sline=”HANYINGLONG”;
var list=new List<int>();
var anon=new{Name=”Kencery”,Age=23};
4) 下列限制使用隐式类型的变量声明:
1)只有在同一个语句中声明或者初始化局部变量时,才能使用var;不能将该变量初始化为null,方法组或者匿名函数。
2)不能将var用于类范围的域
3)由var声明的变量不能用在初始化表达式中,换句话说,此表达式是合法的,int i=(i=20);,但此表达式会产生编译错误:var i=(i=20);
5) 不能在同一个语句中初始化多个隐式类型的变量
6) 如果范围中有一个名为var的类型,则var关键字将解析为该类型名称,而不作为隐式类型局部变量声明的一部分进行处理。
(3)对象初始化器和几何初始化器
1) 在.NET2.0中构造一个对象的方法是提供一个重载的构造函数,二是默认的构造函数生成一个对象,然后对其属性进行赋值,在.net3.5/C#3.0种我们有一种更好的方法来进行对象的初始化。那就是使用对象初始化器。这个特性也是匿名类的一个基础。
2) 基本用法:
LYSC_User user=new LYSC_User{ID=1,Name=”Kencery”,Age=22};
3) 举例说明:
List<Person> list=new List<Person>{
new Person{ID=’1’,Name=”Kencery”,Age=32},
new Person{ID=’1’,Name=”Kencery”,Age=32},
new Person{ID=’1’,Name=”Kencery”,Age=32}
};
4) 对象初始化器是利用了编译器对对象中的对外可见的字段或者属性进行按序赋值,在编译还是隐式的调用了构造函数,对字段或者属性的赋值可以是一个或者是多个。
(4) 匿名类
1) 有了前面对象初始化器的介绍,我们可以使用new{object initializer}或者new[]{object,…}来初始化一个匿名类或者不确定类型的数组,匿名类的对象需要使用var关键字声明:代码如下:
var user=new{ID=1,Name=”Kencery”,Age=”22”};
2) 应用场景,当直接使用select new{object initializer}这样的语法就是将一个Linq查询的结果返回到一个匿名类中
3) 将一组只读属性封装到单个对象中,而无需首先显示定义一个类型,类型名优编译器生成,并且不能在源代码级使用,每个属性的类型由编译器推断。