走進Linq-Linq to SQL源代碼賞析,通過Linq to SQL看Linq
[1] 走進Linq-Linq to SQL源代碼賞析,通過Linq to SQL看Linq
[2] 走進Linq-Linq to SQL源代碼賞析,通過Linq to SQL看Linq
[3] 走進Linq-Linq to SQL源代碼賞析,通過Linq to SQL看Linq
[2] 走進Linq-Linq to SQL源代碼賞析,通過Linq to SQL看Linq
[3] 走進Linq-Linq to SQL源代碼賞析,通過Linq to SQL看Linq
系列文章導航:
不能不說的C#特性-迭代器(下),yield以及流的延遲計算
走進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-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);
}
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);
}
while (iterator.MoveNext())
{
Post p = iterator.Current;
Console.WriteLine(p.Title);
}
全站熱搜