【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. MongoDBAuth

    1,mogoDB 认证登陆

  2. SHDP--Working with HBase(三)之HBase+Phoenix实现分页

    先简单讲讲只用HBase来实现分页的思路: HBase利用scan来扫描表,通过startKey,stopKey来确定扫描范围,在需要进行分页时可以结合HBase提供的PagefFilter过滤扫描的 ...

  3. 小明系列问题——小明序列(Lis 相距大于d的单调上升子序列)

    小明系列问题——小明序列 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) Tot ...

  4. Sublime Text 2 介紹

    代码编辑器或者文本编辑器,对于程序猿来说,就像剑与战士一样,谁都想拥有一把能够随心驾驭且瑞丽无比的宝剑,而每一位程序猿,相同会去追求最适合自己的强大.灵活的编辑器,相信你和我一样,都不会例外. 我用过 ...

  5. MVC4 jquery 样式 主题 用法(案例)

    MVC4已经自带了jquery,新建的项目,基本上什么都不用添加就可以运行,跑项目.(集成了那么多东西,jquery,modernizr,自带的默认权限,生成的模板,但是缺没有一个统一的文档或者什么去 ...

  6. Animate.css 教程

    animate.css 是一个有趣,酷炫的,跨浏览器的动画库,你可以将它用于你的项目中.不管是主页,滑动切换,又或者是其它方面,你都可以通过它来制作出惊人的效果. 基本用法 引入CSS文件 这个对你来 ...

  7. ORACLE物理存储结构

    1.查看数据库实例基本信息: SQL> SELECT DBID,NAME,CREATED,LOG_MODE,OPEN_MODE,FORCE_LOGGING,CURRENT_SCN,FLASHBA ...

  8. 【计算几何初步-线段相交】【HDU1089】线段交点

    You can Solve a Geometry Problem too Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/3 ...

  9. 1. 用U盘安装Centos6.5 + Win7 双系统

    一. 用U盘安装Centos6.5 + Win7 双系统 准备工作:U盘(8G).需要安装的Centos6.5系统(64bit).EasyBCD(用来修复引导,否则开机只有一个系统).         ...

  10. [WARNING] Warning: selected war files include a WEB-INF/web.xml which will be ignored (webxml attribute is missing from war task, or ignoreWebxml attribute is specified as 'true')

    WARNING] Warning: selected war files include a WEB-INF/web.xml which will be ignored (webxml attribu ...