【IT168 专稿】该系列教程描述了如何采用手动的方式映射你的对象类到数据表(而不是使用象SqlMetal这样的自动化工具)以便能够支持数据表之间的M:M关系和使用实体类的数据绑定。即使你选择使用了自动生成类的工具,理解这一实现过程可以让你更加方便地对你的应用程序加以扩展。

  第一篇:步步学LINQ to SQL:将类映射到数据库表

  第三篇:步步学LINQ to SQL:为实体类添加关系

  一旦你将数据库表映射到对应的类对象上并在DataContext中申明了到数据库的映射关系,你就可以不需要使用一行数据库代码(SQL语句)访问数据了。

  通过一个简单的示例BookCatalog(强类型的DataContext)来说明,你可以通过使用在Authors, Books, 和 Categories中定义的集合从数据库中访问book, author, 和 category。

  例如,要查找书的类别,你所要做的就是循还bookCatalog.Books对象并且LINQ会自动地查找数据库(通过映射关系)并填充你使用的集合---使用Book类为要查找的每本书创建一个实例:

  BookCatalog bookCatalog =new BookCatalog( );

  foreach( Book book in bookCatalog.Books){

  string title = book.Title;

  decimal price = book.Price;

  }

  你也可以使用LINQ来过滤这些结果集,因为大多数时候,你并不要一次返回所有的书或者基于性能方面的考虑也不会这么做。

  LINQ提供了一套完整的类似于SQL语法的语言,该语言已经被集成到了.NET语言(C#, Visual Basic)。对该语法的描述超出了本文的范围,下面我们一起看两个例子以了解它们是如何使用的。因为BookCatalog返回一个集合对象,我们使用的查询语法将会查找这些对象(意味着你将直接使用对象名以及它们包涵的字段或属性而不是数据表的字段)。因此,例如,如果你仅仅想查找价格低于$30的书籍,你可以使用一个LINQ where从句,该从句可以仅仅只从bookCatalog.Books集合对象上查找价格低于$30的书:

  select book;

  LINQ的延期执行意味着对books集合的检索不会即时从数据库取得直到实际需要时才进行(例如,使用一个foreach循还),因此我们可以保持应用的过滤条件,然后限制查询的数据以确保读取数据的效率。

  例如,你以后可以使用LINQ提供的orderby语法来定义上面的结果集将数据按书的标题进行排序。

  IEnumerable sortedBooks = from book in cheapBooks

  orderby book.Title

  select book;

  现在,如果你在执行了LINQ查询链之后通过sortedBooks执行循还,仅仅只会执行一次数据库查询。其结果仍然会返回价格低于$30并且按照书的标题排序的所有书。

  select book;

  IEnumerable sortedBooks = from book in cheapBooks

  orderby book.Title

  select book;

  foreach( Book book in sortedBooks ) { ... }

  现在我们一起看看如何映射对象之间的关系以便你能够操作这些对象(例如book.Author.Name)。

步步学LINQ to SQL:使用LINQ检索数据【转】的更多相关文章

  1. Linq To SQL和Linq To Object的批量操作InsertAllOnSubmit介绍

    无论是Linq To SQL还是Linq To Object(Entity frameworks)它们都为开发人员提供了Insert操作,及Insert集合操作,即InsertOnSubmit和Ins ...

  2. [LINQ TO SQL]使用LINQ TO SQL创建数据库

    这篇博客将介绍如何使用LINQ TO SQL来创建数据库,以及如何映射Table之间的主外键关系. 我们的数据库表关系如下: Province与City之间1:M,City与Area之间1:M的关系. ...

  3. MVC3+Linq to sql 显示数据库中数据表的数据

    1:首先创建asp.net mvc3应用程序 2:创建项目完成后 找到controllers文件鼠标右击选择添加控制器 3 为models文件夹添加一个linq to sql类文件,然后把数据库中的数 ...

  4. 转:使用linq to sql 随机取一行数据的方法

    原文地址:http://outofmemory.cn/code-snippet/1760/usage-linq-to-sql-suiji-take-yixing-data-method 虽然这看来已经 ...

  5. linq to sql and linq to object 总结

    Enumable类型是linq to object   是一个很特殊的类型   这个类型的数据源都是在程序的内存中 Queryable类型是 Linq to sql   对数据库进行操作都是这个类型  ...

  6. linq to sql 和linq to php 的区别

    linq to sql 这是自.net框架3.5版本以上做出了相关规定. linq to php .Net的linq库的忠实移植到PHP 这个库使得大量使用匿名函数在PHP 5.3中引入的功能.因此, ...

  7. Sql语言简介——检索数据

    检索数据可以通过SELECT语句来实现. select子句:用于选择数据表.视图中的列. into子句:用于将原表中的结构和数据插入新表中. from子句:用于指定数据来源,包括表.视图和其他sele ...

  8. Difference between LINQ to SQL and LINQ to Entity(DataContext and DbContext)

    http://msdn.microsoft.com/en-us/library/cc161164.aspx http://stackoverflow.com/questions/2443836/wha ...

  9. 步步学LINQ to SQL:为实体类添加关系【转】

    [IT168 专稿]本文详细为你阐述了如何在你的应用程序中实现LINQ to SQL.附件的示例程序包括了这里探讨的所有代码,还提供了一个简单的WPF图形界面程序来显示通过数据绑定返回的结果集. 第一 ...

随机推荐

  1. MSSQL 镜像

    1.设置数据库CollectionDB 为完整备份模式服务端: USE master ALTER DATABASE CollectionGuest SET RECOVERY FULL GO 镜相端: ...

  2. Windows Message Queue(优先队列)

    欢迎参加——BestCoder周年纪念赛(高质量题目+多重奖励) Windows Message Queue Time Limit: 2000/1000 MS (Java/Others)    Mem ...

  3. start_kernel——local_irq_disable

    在启动初期须要关闭CPU的IRQ,原因: 因为尚未对中断代码.向量表,中断处理器进行初始化,所以必须关闭中断. 我的源码里面定义了 CONFIG_TRACE_IRQFLAGS_SUPPORT,所以调用 ...

  4. 如何对应用服务性能问题诊断(Tomcat、Weblogic中间件)

    在我们web项目中,我们常见的web应用服务器有Tomcat.Weblogic.WebSphere.它们是互联网应用系统的基础架构软件,也叫“中间件”,负责处理动态在页面请求,并为应用提供了名字.事务 ...

  5. 使用Unicorn-engine 续1

    续上次,在ubuntu server 14.04交叉编译好后,下一步就是在windows上使用了. 在windows上,我主要是用python进行分析程序,因此我最初安装的是官网上的 unicorn- ...

  6. 百度搜索附近加盟店等基于LBS云搜索功能的实现

    一.注册百度账号,进入开发者平台 创建应用并获取ak 地址如下 http://lbsyun.baidu.com/apiconsole/key/update?app-id=7546025 ok获取到了. ...

  7. 伪元素::selection(怎么修改网页中被选中文本的样式)

    当我们用鼠标选中一段文字的时候我们会发现文字的颜色和背景色都改变了, 有时候设计给这种选中状态设计了其他的样式,那么我们怎么来自定义选中的文本的样式呢? 用::selection <p>我 ...

  8. Cloudera Manager Free Edition 4.1 和CDH 4.1.2 简易安装教学

    转载:http://fenriswolf.me/2012/12/06/cloudera-manager-free-edition-4-1-和-cdh-4-1-2-简易安装教学/ 安装及管理一个大的Ha ...

  9. 加密html

    2009年4月4日 周六 22:18 <HTML> <HEAD> <meta http-equiv="Content-Type" content=&q ...

  10. sql 函数 总结

    聚合函数 Avg(numeric_expr)返回integer.decimal.money.float---返回组中各值的平均值 Count(*|column_name|distinct column ...