您的位置:知识库 » 数据库

走进Linq-Linq to SQL源代码赏析,通过Linq to SQL看Linq

作者: 横刀天笑  来源: 博客园  发布时间: 2008-09-24 12:06  阅读: 9169 次  推荐: 0   原文链接   [收藏]  

系列文章导航:

走进Linq--Linq横空出世篇

走进Linq-辉煌的背后

走进Linq-Linq大观园

不能不说的C#特性-对象集合初始化器

不能不说的C#特性-匿名类型与隐式类型局部变量

不能不说的C#特性-扩展方法

不能不说的C#特性-匿名方法和Lambda表达式

不能不说的C#特性-迭代器(上)及一些研究过程中的副产品

不能不说的C#特性-迭代器(下),yield以及流的延迟计算

走进Linq-Linq to Objects(上)基础篇

走进Linq-Linq to Objects(下)实例篇

走进Linq-Linq to SQL感性认识篇

走进Linq-Linq to SQL How do I(1)

走进Linq-Linq to SQL How do I(2)

走进Linq-Linq to SQL How do I(3)

走进Linq-How do I(4)拾遗补零篇第一节

走进Linq-Linq to SQL源代码赏析 Table的获取过程

走进Linq-Linq to SQL源代码赏析之Provider的初始化

走进Linq-Linq to SQL源代码赏析,通过Linq to SQL看Linq


LINQ,语言集成查询,就是把一些查询操作集成到语言中(貌似是废话),比如查询关系数据库,而且提供一种一致的操作方式,不管最终的数据存储在哪里?内存中,远程数据库还是一Xml格式文件存储,不仅仅如此,你还可以用你丰富的想象力扩充自己的查询。Linq to SQL无疑把Linq的能量发挥的淋漓尽致,我们就以Linq to SQL的体系结构来学习一下Linq的整体框架。

在上两章里面我们通过源代码探讨了关于DataContext的初始化和Table<TEntity>对象的获取,以及Provider的初始化。今天我们来看看Linq to SQL执行的大至流程

假如我们写下这样的代码:

DataContext dbCtx = new DataContext("server=localhost;database=cnblogs;user id=sa;pwd=sa");
Table
<Post> posts = dbCtx.GetTable<Post>();
foreach (Post p in posts)
{
   Console.WriteLine(p.Title);
}

在幕后到底发生了什么呢?

看到foreach代码大家肯定都知道这个Table<Post>肯定实现了IEnumerable<Post>接口,这里的foreach的代码和下面这个代码的效果是一样的,实际上最终也是转换成这样的代码:

IEnumerator<Post> iterator = posts.GetEnumerator();
while (iterator.MoveNext())
{
    Post p 
= iterator.Current;
    Console.WriteLine(p.Title);
}


0
0

数据库热门文章

    数据库最新文章

      最新新闻

        热门新闻