成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

LINQ ORM詳細比較

開發 后端
這里介紹LINQ ORM都是一種技術概念,LINQ是一種語言特性,在語言(Language)中集成(Integrate)查詢(Query)句法,ORM是Object/Relation Mapping。

LINQ有很多值得學習的地方,這里我們主要介紹LINQ ORM之間的關系,包括介紹LINQ to SQL是.NET 3.5內置的一個輕量級O/R Mapping解決方案等方面。

1.LINQ不是ORM,確切地來說,他們之間的關系是:

LINQ的一個子集是屬于ORM的

2.他們之間的唯一的相同點是:

LINQ ORM都是一種技術概念,而不是一種實現,最大的區別就在于——他們根本就不是一路東西!

LINQ是一種語言特性,在語言(Language)中集成(Integrate)查詢(Query)句法,所以才叫LINQ——Language-Integrated Query,目的是以一種看起來像SQL的方式來完成原本你需要去foreach的工作——最顯著的就是集合操作,比如搜索啊,排序啊,批量更新啊。因為 SQL是為關系數據庫而存在的,關系數據理論是建立在集合論的基礎上的,所以集合操作當然是最本職的工作啦!

ORM是Object/Relation Mapping。Object是哪路?是Object Oriented Programming那路Object,Relation是哪路?是關系數據理論那路Relation,ORM的作用是在對象和關系之間建立映射,讓開發者可以以面向對象的方式去完成一些關系數據操作——這些原本需要用關系代數、關系操作語言,這些通常看起來有點生硬,還得花心思去專門學的東西來解決的操作。

LINQ ORM就不是一路上的東西,但是為什么很多人會把他們扯在一起呢?

3.有兩個最主要的原因

第一:LINQ長得太像SQL了!SQL是關系數據訪問領域目前階段當之無愧的帶頭大哥,ORM是一個挺時髦的關系數據訪問面向對象化解決方案,也和SQL離不開關系,兩者就靠SQL搭上邊了。

第二:LINQ to SQL的存在。LINQ to SQL是一個ORM框架,它利用了LINQ的便捷性和LINQ長得像SQL這個特點,實現了一個用LINQ來完成關系型數據庫(這里是SQL SERVER)數據訪問的便捷通道。

4.LINQ / LINQ to SQL / LINQ to XXX

LINQ是新生事物,不過從不少文章和討論上看來,這方面的概念也已經有點混沌不清了。因此我們經常可以看到這樣的話:

◆LINQ只能將數據表與實體屬性一一對應……
◆LINQ開發指南:在LINQ中進行數據庫字段映射……

以上兩句話其實說的都是LINQ to SQL而不是指LINQ。可能由于LINQ to SQL的上鏡率最廣(連MSDN上About LINQ的第一個示例就是查詢數據庫的),因此許多人都將LINQ to SQL與LINQ混用,這會給初學者造成誤解,認為LINQ就是LINQ to SQL,LINQ to SQL就是LINQ——事實當然不是這樣的。

LINQ是Language-Integrated Query的縮寫,是C# 3.0和VB 9.0中新加入的語言特性,可以在編程時使用內置的查詢語言進行基于集合的操作。這么做可以大大簡化開發過程,提高開發效率。例如:

  1. List userList = GetUserList();  
  2. var userWithOddId = from u in userList  where u.UserID % 2 == 1  select u;   
  3. foreach (User u in userWithOddId)  {  
  4. Console.WriteLine(u.UserName);  
  5. }   

如果沒有LINQ,要篩選出ID為奇數的User對象則需要創建一個List,然后遍歷整個列表,將符合特定條件的User對象放入新列表。而有了 LINQ,這部分的篩選就變得非常容易,甚至只需要一句話就能完成。如果覺得這個例子不夠說明LINQ對生產力有重大貢獻的話,請關注我接下來的一篇文章(暫定名為《我們為什么要擁抱LINQ》)。LINQ特指形如上面這段代碼中from...where...select這樣的用法,其返回值是 IQueryable。

LINQ to SQL是.NET 3.5內置的一個輕量級O/R Mapping解決方案,可以將數據表映射為實體對象,方便開發人員對數據庫的操作。可見,LINQ to SQL實只是LINQ的一個實現,提供了一個可以查詢SQL Server數據庫的LINQ Provider。

LINQ Provider是LINQ 查詢的執行器,標準LINQ語法支持許多的操作符,但是某個具體的LINQ實現可能只支持其中的一部分。在.NET 3.5默認提供了三種LINQ Provider,分別是LINQ to Object(即上面的例子),LINQ to SQL以及LINQ to XML。

LINQ to XXX表示使用LINQ針對XXX這種數據進行查詢的解決方案。我們可以自定義LINQ Provider,使用我們自定義的查詢規則來處理特定數據集。目前互聯網上已經可以找到數十種LINQ Provider(如LINQ to Flickr,LINQ to NHibernate等),而已經處于beta 3階段的ADO.NET Entity Framework,最終也會提供一個LINQ Provider,叫做“LINQ to Entities”。以上介紹LINQ ORM。

【編輯推薦】

  1. LINQ查詢操作剖析
  2. LINQ生成字符串概述
  3. LINQ查詢語法簡單描述
  4. LINQ解決方案簡單概述
  5. LINQ查詢結果分析
責任編輯:佚名 來源: IT168
相關推薦

2009-09-08 13:07:15

介紹Linq to S

2009-09-15 13:59:18

LINQ to Dat

2009-09-18 09:25:06

LINQ Framew

2009-09-14 15:15:45

LINQ技術

2009-09-14 17:40:47

LINQ To SQL

2009-09-17 13:10:48

linq動態排序

2009-09-14 14:17:11

Linq異常處理

2009-09-14 16:33:55

LINQ To XML

2009-09-15 13:20:34

LINQ DataCo

2009-09-14 14:58:52

LINQ to XML

2009-09-14 13:14:49

LINQ序列

2009-07-29 08:58:20

NHibernate ORM框架

2009-12-15 18:39:36

Ruby Active

2009-09-14 13:50:35

LINQ編程模型

2009-09-17 10:40:22

Linq Lambda

2009-09-08 15:56:50

Linq使用Group

2009-09-09 09:48:43

Linq延遲加載

2009-09-14 16:21:34

LINQ To XML

2009-09-08 11:09:39

LINQ數據源

2009-06-26 15:17:44

SDOEJB 3.0
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 成人亚洲综合 | 亚洲午夜精品 | 日本中文字幕一区 | 黄色一级片在线播放 | 亚州av | 国产精品乱码一区二三区小蝌蚪 | 天天碰日日操 | 91在线精品一区二区 | 国产高清不卡 | 日韩at | 国产综合久久久久久鬼色 | 丁香婷婷成人 | 亚洲精品视频在线观看视频 | 亚洲最大的黄色网址 | 国产三区在线观看视频 | 我我色综合| 国产精品久久久久久久午夜片 | 日韩免费高清视频 | av一级久久 | 欧美一级二级三级 | 中国黄色毛片视频 | 二区视频 | a级片在线观看 | 美女福利网站 | 日韩视频专区 | 午夜视频网 | 东方伊人免费在线观看 | 成在线人视频免费视频 | 亚洲精品在线免费看 | 四虎影院在线播放 | 日本午夜精品 | 好姑娘影视在线观看高清 | 人人干人人舔 | 中文字幕在线免费观看 | 欧美激情一区二区三区 | 久久久久久国产精品 | 国产99视频精品免费视频7 | 一区二区在线不卡 | 国产线视频精品免费观看视频 | 天天影视综合 | 91精品国产综合久久久久 |