走進Linq-Linq to SQL源代碼賞析,通過Linq to SQL看Linq

作者: 橫刀天笑  來源: 博客園  發布時間: 2008-09-24 12:06  閱讀: 9084 次  推薦: 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
 
 
 

文章列表

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()