您的位置:知识库 » 数据库

走进Linq-Linq to SQL How do I(2)

作者: 横刀天笑  来源: 博客园  发布时间: 2008-09-23 19:02  阅读: 8293 次  推荐: 3   原文链接   [收藏]  

系列文章导航:

走进Linq--Linq横空出世篇

走进Linq-辉煌的背后

走进Linq-Linq大观园

不能不说的C#特性-对象集合初始化器

不能不说的C#特性-匿名类型与隐式类型局部变量

不能不说的C#特性-扩展方法

不能不说的C#特性-匿名方法和Lambda表达式

不能不说的C#特性-迭代器(上)及一些研究过程中的副产品

不能不说的C#特性-迭代器(下),yield以及流的延迟计算

走进Linq-Linq to Objects(上)基础篇

走进Linq-Linq to Objects(下)实例篇

走进Linq-Linq to SQL感性认识篇

走进Linq-Linq to SQL How do I(1)

走进Linq-Linq to SQL How do I(2)

走进Linq-Linq to SQL How do I(3)

走进Linq-How do I(4)拾遗补零篇第一节

走进Linq-Linq to SQL源代码赏析 Table的获取过程

走进Linq-Linq to SQL源代码赏析之Provider的初始化

走进Linq-Linq to SQL源代码赏析,通过Linq to SQL看Linq


本篇是Linq to SQL How do I的第二篇,难度系数100,定位为进阶级。

内容

对象之间的关系

 

对象之间的关系

既然是对象-关系映射,各个表之间肯定不是独立存在的(如果都是独立存在的,也没有必要用关系数据库了),那么就必然涉及到几个表之间的联合了。

Linq to SQLSQL语句一样,支持两种方式的联合:

1.       利用where子句,对两个表进行查找

2.       使用join子句

我们还是用例子来说明吧,现在要对blogsposts进行查询,传入一篇文章的id的时候,找出这篇文章相关信息的同时还要找出这篇文章属于哪个博客,接着上篇的例子,我们首先得给Blog类加上映射:

博客类映射(Blog)

首先获取PostBlogTable的对象,然后施加操作:

Table<Blog> blogs = dbContext.GetTable<Blog>();
            Table
<Post> posts = dbContext.GetTable<Post>();

var result 
= from blog in blogs
           from post 
in posts
           
where post.BlogId == blog.Id && post.Id == 2
           select 
new { 
               BlogName 
= blog.Name,
               PostTitle 
= post.Title,
               PostBody 
= post.Body
           };

foreach (var item in result)
    Console.WriteLine(item.BlogName);
下面是Linq to SQL为我们生成的SQL语句,从上面可以看出来是用where做联结的条件来进行的,这种联结的方式是不被推荐的,存在于ANSI-82 SQL的标准中

推荐的方式是使用join子句:
Table<Blog> blogs = dbContext.GetTable<Blog>();
            Table
<Post> posts = dbContext.GetTable<Post>();

            var result 
= from blog in blogs
                         join post 
in posts on blog.Id equals post.BlogId
                         
where post.Id == 2
                         select 
new { 
                            BlogName 
= blog.Name,
                            PostTitle 
= post.Title,
                            PostBody 
= post.Body
                         };

foreach (var item in result)
   Console.WriteLine(item.BlogName);
3
0
标签:LINQ LINQ to SQL

数据库热门文章

    数据库最新文章

      最新新闻

        热门新闻