LINQtoSQL查询分析

在向大家详细介绍LINQ to SQL查询之前,首先让大家了解下LINQ to SQL查询数据库中的数据,然后全面介绍LINQ to SQL查询。

LINQ to SQL查询数据库中的数据

1. 虽然数据连接已经被确定并建立,但事实上,在一个查询被执行之前,没有任何数据会被接收。这被称为 lazy(迟缓的)加载或者是 deferred evaluation.(延迟执行),它们在大部分场景中将提高效率。下面代码所包含的查询将寻找伦敦的客户:

 
 
 
  1. Sub Main()
  2. '使用标准的数据连接字符串
  3. Dim db As DataContext
  4. db = New DataContext("Data Source=."sqlexpress; Initial Catalog=Northwind")
  5. '获取一个用于进行强类型查询的 Table 对象
  6. Dim Customers As Table(Of Customer)
  7. Customers = db.GetTable(Of Customer)()
  8. '将包含具体 SQL 的,LINQ to SQL 生成的日志显示到控制台窗口
  9. '这仅仅用于调试或理解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

这个LINQ to SQL查询将返回所有来自伦敦的定义于 Customers 表中的客户。它被定义为查询表达式语法,编译器将把它编译为清晰的方法调用语法。同时请注意到,custs 集合的类型并没有被定义,这是一个非常便利的 Visual Basic 9.0 特性,它将允许你依靠编译器推断集合数据类型。特别是当查询将返回一个复合的多属性类型时,这将是一个尤其有用的特性,编译器将自动推断实际的类型而不需要额外的定义操作。

2. 增加下列代码以执行并输出结果:

 
 
 
  1. Sub Main()
  2. '使用标准的数据连接字符串
  3. Dim db As DataContext
  4. db = New DataContext("Data Source=."sqlexpress; Initial Catalog=Northwind")
  5. '获取一个用于进行强类型查询的 Table 对象
  6. Dim Customers As Table(Of Customer)
  7. Customers = db.GetTable(Of Customer)()
  8. '将包含具体 SQL 的,LINQ to SQL 生成的日志显示到控制台窗口
  9. '这仅仅用于调试或理解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查询将仅仅在代码需要获取实际数据时才被执行。在那一时刻,一条相应的 SQL 命令被执行并且建立了相应的对象。这个概念被称之为“延迟执行”,它使查询能够冷静地评估并仅当需要结果的情况下才执行 SQL 命令——当即执行将有大量的往返损耗与不必要的对象化开销。

3. 按下F5以调试整个解决方案

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

调用 Console.ReadLine 方法的目的是防止控制台窗口在执行完毕后立即消失。在以后的步骤中,这一步并不一定都需要。

你将会看到像这个窗口一样的控制台窗口:
屏幕上的第一个部分展示了 Linq 生成并发送 SQL 命令到数据库的全过程。紧接着,你可以看到我们的查询返回的数据。需要注意的是,从数据库中接收的行将被转换为“真正的” CLR 对象,这将在调试器中被证实。

网站名称:LINQtoSQL查询分析
文章出自:http://www.shufengxianlan.com/qtweb/news22/475322.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联