Entity Framework

      Entity Framework利用了抽象化数据结构的方式,将每个数据库对象都转换成应用程序对象(entity),而数据字段都转换为属性(property),关系则转换为  结合属性(association),让数据库的E/R模型完全转成对象模型,如此让程序设计师能用最熟悉的编程语言来调用访问。而在抽象化的结构之下,则是高度集成的与对应结构的概念层、对应层和存储层,以及支持Entity Frameowrk的数据提供者(provider),让数据访问的工作得以顺利与完整地进行。

      ADO.NET Entity Framework以Entity Data Model(EDM)为主,将数据逻辑层切分为三块,分别为Conceptual Schema,Mapping Schema与Storage

Schema三层,其上还有Entity Client,Object Context 以及LINQ可以使用。

      概念层:负责向上的对象与属性的显露与访问,概念层结构定义了对象模型,让上层的应用程序代码可以如面向对象的方式般访问数据。

      对应层:将上方的概念层和底下的存储层的数据结构对应在一起,以确认数据的来源与流向。

      存储层:依不同的数据库与数据结构,而显露出实体的数据结构体,和Provider一起,负责实际对数据库的访问和SQL的产生。:负责与数据库管理系统中的数据表做实体对应(Physical Mapping),让数据可以输入正确的数据来源中

             LINQ的语义:(Language-Integrated Query,语言集成查询,是一组用于C#和Visual Basic语言的扩展。它允许编写C#或Visual Basic代码以查询数据库相同的方式操作内存数据。)

  from 临时变量 in 集合对象或数据库对象

      where 条件表达式

      [order by 条件]

      [group by 条件]

      select 临时变量中被查询的值

      注意:LINQ语法必须以select或者group by 结束。LINQ的查询返回值的类型是临时变量的类型,可能是一个对象也可能是一个集合。LINQ的查询一般跟var关键字一起使用。

     在LINQ中,数据源和查询结构实际上都是IEnumerable<T>或IQueryable<T>类型对象,所以可以通过使用普通对象(调用方法、使用属性等)对数据源进行查询或使用查询结构数据。

     IEnumerable<T>接口:IEnumerable<T>泛型接口支持在指定的数据集合上进行迭代操作。它定义了一组扩展方法,用来对数据集合中的元素进行遍历、过滤、排序、搜索等操作。在LINQ中,数据源实际上市实现了接口IEnumerable<T>的类,通过select子句返回的查询结果页是一个实现了IEnumerable<T>的类。

     IEnumerable<T>提供的方法包括数值运算(Sum、Min、Max、Average)、元素数量(Count、LongCount)、取值(First、Last、ElementAt等)、提取子集(Skip、SkipWhile、Take、TakeWhile、)集合操作(Reverse、Concat、Distinct、Except、Intersect、Union、SequenceEqual等)。这些方法提供了LINQ所需要的所有操作。

原文地址:https://www.cnblogs.com/xuezhi/p/2833500.html