天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

走進Linq-Linq to SQL感性認識篇

系列文章導航:

走進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就提到操作數據庫什么的,其實操作數據庫的只是Linq中的Linq to SQL,Linq本身是一個很大的家族,而且Linq家族極具擴展性。從人們一提到Linq就把她當作一個ORM這個來看,說明廣大程序員對Linq to SQL期望值很高,高過其他幾種,對微軟在框架中集成ORM的期望值也很高。從今兒起我將用幾篇來介紹Linq to SQL。

Linq to SQL的核心庫是System.Data.Linq.dll(位于C:"Program Files"Reference Assemblies"Microsoft"Framework"v3.5目錄下),不過,System.Core.dll里的System.Linq是整個Linq的核心。在System.Data.Linq.dllSystem.Data.Linq命名空間下的DataContext類是Linq to SQL的入口點,可以說Linq to SQL一切奇妙之處都來源如此。通過DataContxt我們可以獲取Table對象(這個類和DataContext在同一命名空間下),你會發現Table竟然是繼承自IEnumerable,那上一篇介紹的那些查詢表達式都可以應用Table對象上了,呵呵。

有過使用ORM框架的讀者肯定知道,一般ORM框架都有個映射,就是將內存中的對象和數據庫表做映射,大名鼎鼎的NHibernate是使用XML文件做映射的(我們一般將這種映射稱之為無入侵的),還有ActiveRecord模式一般式在屬性上加Attribute做映射的(一般稱之為侵入式的)Linq to SQL也不例外,也需要一個映射,她使用的是侵入式的,所以就需要一些Attribute,這些Attribute放在System.Data.Linq.Mapping命名空間下。

作為微軟大張旗鼓推出的ORM,Linq to SQL目前卻支持Sql Server,這個未免有些遺憾(所幸的是對于其他幾種數據庫已經有開源實現了),不過放心,看看核心庫里面的命名空間你也許看到了曙光。在System.Data.Linq.dll還有兩個命名空間:

System.Data.Linq.Provider,這個命名空間是提供一些Provider模式的接口,由于不同數據庫所需要的SQL語句,一些函數都有一些不同,但是她們的操作卻都大同小異,所以我們可以抽象一個統一的接口,然后有各個數據庫的實現(非常奇怪微軟為啥將IProvider接口設置為internal的,難道他只想他自己一個人干?)System.Data.Linq.SqlClient命名空間里放的就是針對Sql Server的實現了,按照這個結構,支持所有的數據庫都是可以的。

好了,上面對Linq to SQL的一些組件做了一個大致的介紹,下面就稍微演示一段代碼。

要做一個Linq to SQLcase,首先你必須創建一個映射類,該類映射到數據庫表。實際上映射類和我們在上一篇所使用的實體類非常相似(確保對System.Data.Linq.dll的引用,并且對System.Data.Linq.Mapping命名空間的聲明)

[Table(Name="Users")]
    
public class User
    {
        [Column(IsPrimaryKey
=true)]
        
public int UserId { getset; }
        [Column]
        
public string UserName { getset; }
        [Column]
        
public string Password { getset; }
        [Column]
        
public string BlogName { getset; }
        [Column]
        
public Role Role { getset; }
    }

系列文章導航:

走進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


(看到這里你也許會命名什么叫入侵式了吧,入侵式就是為了達到目的,對代碼做了一些改變,比如這里的Table,Column

User類上面加的Table表示這個類和一個表映射,表名為Users,注意,如果表名和類名是一樣的,這個Name屬性是無需指定的,在屬性或共有字段上加Column表示這個屬性和數據庫表里的字段映射,如果屬性名和數據庫表字段名一直只需要加個Column就夠了,如果這個屬性在數據庫表里是個主鍵,那么將其IsPrimaryKey設置為true就可以了。

映射建好了,該是Linq上場的時候了(我們要從數據庫表里查詢出用戶名以”yu”開頭的所有用戶)

//我們給定一個數據庫連接字符串實例化一個DataContext對象
DataContext dbContext = new DataContext(connectionString);

dbContext.Log 
= Console.Out;
//調用DataContext的GetTable方法,獲取一個Table對象
Table<User> users = dbContext.GetTable<User>();
//由于Table繼承自IEnumerable,所以,前面所介紹的那些查詢表達式在這里也使用了
var result = from user in users
           
where user.UserName.StartsWith("yu")
           select user;

//遍歷結果集
foreach (var u in result)
    Console.WriteLine(u.UserName);

it知識庫走進Linq-Linq to SQL感性認識篇,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 无码免费视频AAAAAA片草莓 | 色戒西瓜视频 | 成人毛片100部免费看 | 亚洲国产在线视频精品 | 亚洲精品天堂在线观看 | 亚洲国产精品免费线观看视频 | 国产精品96久久久久久AV不卡 | 日本亚洲中文字幕无码区 | 午夜插插插 | 一天不停的插BB十几次 | 一个人的视频全免费在线观看www | 无人区日本电影在线观看 | 午夜伦理一yy4480影院 | 亚洲AV无码久久流水呻蜜桃久色 | 欧美506070 | 日日夜夜狠狠干 | 亚洲区 bt下载 | 中文字幕日本在线mv视频精品 | 热久久视久久精品2015 | 国产精品爽爽久久久久久蜜桃网站 | 久久久久亚洲 | 91精品国产免费入口 | 国产日韩精品一区二区三区在线 | 亚洲精品蜜桃AV久久久 | 野花日本手机观看大全免费3 | 国产精品看高国产精品不卡 | 亚洲精品国产自在现线最新 | 亚洲男女羞羞无遮挡久久丫 | 亚洲VA欧美VA天堂V国产综合 | 午夜福利电影网站鲁片大全 | 十九禁啊啪射视频在线观看 | 成人精品在线视频 | 一品道门在线观看免费视频 | 亚洲精品久久99蜜芽尤物TV | 女人张腿让男人桶免费 | 国产亚洲精品久久77777 | 免费精品国产日韩热久久 | 国产精品国产三级国产专区53 | 97成人碰碰在线人妻少妇 | 久久在精品线影院精品国产 | 免费在线观看a视频 |