自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

LINQ to SQL查詢分析

開發(fā) 后端
這里介紹LINQ to SQL查詢將返回所有來自倫敦的定義于 Customers 表中的客戶。它被定義為查詢表達(dá)式語法,編譯器將把它編譯為清晰的方法調(diào)用語法。

在向大家詳細(xì)介紹LINQ to SQL查詢之前,首先讓大家了解下LINQ to SQL查詢數(shù)據(jù)庫(kù)中的數(shù)據(jù),然后全面介紹LINQ to SQL查詢。

LINQ to SQL查詢數(shù)據(jù)庫(kù)中的數(shù)據(jù)

1. 雖然數(shù)據(jù)連接已經(jīng)被確定并建立,但事實(shí)上,在一個(gè)查詢被執(zhí)行之前,沒有任何數(shù)據(jù)會(huì)被接收。這被稱為 lazy(遲緩的)加載或者是 deferred evaluation.(延遲執(zhí)行),它們?cè)诖蟛糠謭?chǎng)景中將提高效率。下面代碼所包含的查詢將尋找倫敦的客戶:

  1. Sub Main()  
  2. '使用標(biāo)準(zhǔn)的數(shù)據(jù)連接字符串  
  3. Dim db As DataContext  
  4. db = New DataContext("Data Source=."sqlexpress; Initial Catalog=Northwind")  
  5. '獲取一個(gè)用于進(jìn)行強(qiáng)類型查詢的 Table 對(duì)象  
  6. Dim Customers As Table(Of Customer)  
  7. Customers = db.GetTable(Of Customer)()  
  8. '將包含具體 SQL 的,LINQ to SQL 生成的日志顯示到控制臺(tái)窗口  
  9. '這僅僅用于調(diào)試或理解Linq to Sql是如何工作的  
  10. db.Log = Console.Out  
  11. '查詢倫敦的客戶  
  12. Dim custs = From customer In Customers _  
  13. Where customer.City = "London" _  
  14. Select customer  
  15. End Sub 

這個(gè)LINQ to SQL查詢將返回所有來自倫敦的定義于 Customers 表中的客戶。它被定義為查詢表達(dá)式語法,編譯器將把它編譯為清晰的方法調(diào)用語法。同時(shí)請(qǐng)注意到,custs 集合的類型并沒有被定義,這是一個(gè)非常便利的 Visual Basic 9.0 特性,它將允許你依靠編譯器推斷集合數(shù)據(jù)類型。特別是當(dāng)查詢將返回一個(gè)復(fù)合的多屬性類型時(shí),這將是一個(gè)尤其有用的特性,編譯器將自動(dòng)推斷實(shí)際的類型而不需要額外的定義操作。

2. 增加下列代碼以執(zhí)行并輸出結(jié)果:

  1. Sub Main()  
  2. '使用標(biāo)準(zhǔn)的數(shù)據(jù)連接字符串  
  3. Dim db As DataContext  
  4. db = New DataContext("Data Source=."sqlexpress; Initial Catalog=Northwind")  
  5. '獲取一個(gè)用于進(jìn)行強(qiáng)類型查詢的 Table 對(duì)象  
  6. Dim Customers As Table(Of Customer)  
  7. Customers = db.GetTable(Of Customer)()  
  8. '將包含具體 SQL 的,LINQ to SQL 生成的日志顯示到控制臺(tái)窗口  
  9. '這僅僅用于調(diào)試或理解Linq to Sql 是如何工作的  
  10. db.Log = Console.Out  
  11. 'Query for customers in London  
  12. Dim custs = From customer In Customers _  
  13. Where customer.City = "London" _  
  14. Select customer  
  15. For Each cust In custs  
  16. Console.WriteLine("ID={0}, City={1}", cust.CustomerID, cust.City)  
  17. Next  
  18. Console.ReadLine()  
  19. End Sub 

這些LINQ to SQL查詢將僅僅在代碼需要獲取實(shí)際數(shù)據(jù)時(shí)才被執(zhí)行。在那一時(shí)刻,一條相應(yīng)的 SQL 命令被執(zhí)行并且建立了相應(yīng)的對(duì)象。這個(gè)概念被稱之為“延遲執(zhí)行”,它使查詢能夠冷靜地評(píng)估并僅當(dāng)需要結(jié)果的情況下才執(zhí)行 SQL 命令——當(dāng)即執(zhí)行將有大量的往返損耗與不必要的對(duì)象化開銷。

3. 按下F5以調(diào)試整個(gè)解決方案

4. 按下 ENTER,退出該程序。

調(diào)用 Console.ReadLine 方法的目的是防止控制臺(tái)窗口在執(zhí)行完畢后立即消失。在以后的步驟中,這一步并不一定都需要。

你將會(huì)看到像這個(gè)窗口一樣的控制臺(tái)窗口:
屏幕上的第一個(gè)部分展示了 Linq 生成并發(fā)送 SQL 命令到數(shù)據(jù)庫(kù)的全過程。緊接著,你可以看到我們的查詢返回的數(shù)據(jù)。需要注意的是,從數(shù)據(jù)庫(kù)中接收的行將被轉(zhuǎn)換為“真正的” CLR 對(duì)象,這將在調(diào)試器中被證實(shí)。

【編輯推薦】

  1. Linq匿名委托類型
  2. Linq異常處理詳細(xì)介紹
  3. Linq Setting字段描述
  4. Linq數(shù)據(jù)和對(duì)象淺談
  5. Linq內(nèi)部執(zhí)行原理剖析
責(zé)任編輯:佚名 來源: 博客園
相關(guān)推薦

2009-09-14 10:09:26

LINQ查詢結(jié)果

2009-09-09 18:03:47

LINQ to SQL

2009-09-08 13:16:01

Linq to SQL

2009-09-18 14:33:37

LINQ to SQLSQL命令

2009-09-17 16:46:34

Linq to sql

2009-09-18 15:15:12

LINQ to SQL

2009-09-17 18:05:15

linq to sql

2009-09-16 10:48:32

LINQ查詢操作

2009-09-14 18:53:27

LINQ查詢

2009-09-16 15:41:45

LINQ查詢XML文檔

2009-09-18 16:46:15

LINQ查詢句法

2009-09-15 14:58:26

Linq查詢本質(zhì)

2009-09-17 16:20:43

Linq to sql

2009-09-14 17:03:32

LINQ模糊查詢

2009-09-17 17:03:13

LINQ動(dòng)態(tài)查詢

2009-09-08 14:34:42

Linq to SQL

2009-09-17 08:47:00

Linq查詢

2009-09-16 09:23:14

LINQ To SQL

2009-09-08 14:45:24

Linq to SQL支持SQL Serve

2009-09-17 13:15:20

LINQ查詢
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)