走进Linq-Linq to SQL How do I(2)
[2] 走进Linq-Linq to SQL How do I(2)
[3] 走进Linq-Linq to SQL How do I(2)
[4] 走进Linq-Linq to SQL How do I(2)
系列文章导航:
不能不说的C#特性-迭代器(下),yield以及流的延迟计算
走进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-Linq to SQL源代码赏析 Table
走进Linq-Linq to SQL源代码赏析之Provider的初始化
走进Linq-Linq to SQL源代码赏析,通过Linq to SQL看Linq
多对多的关系
Linq to SQL默认是不支持多对多的关系的,所以也没有针对多对多关系的Attribute和Query,不过网上有很多多对多关系的解决方案,在这里我就不做介绍了,我给个连接:
这位大哥的方案是一个通用的,你可以下载他的代码应用到你的项目当中,有时间我会把这个翻译一下。
一对一的关系(one-to-one)
一对一的关系Linq to SQL是支持的,你只要给关系的两边都加上EntitySet属性就可以了,下面用实例做个演示:
在我们的实例中,每个用户对应着一个博客,每个博客也只对应着一个用户,这是个一对一的关系:
Blog类前面已经出现过,我们就不列出全部代码,将Blog类修改如下:
public int UserId { get; set; }
[Association(ThisKey="UserId",OtherKey="Id",IsUnique=true)]
public EntitySet<User> User { get; set; }
就是添加一个EntitySet User的属性而已。
看看操作:
通过查询结果可以看出,他们之间的关系建立了。
后记
本来这一篇我准备了好几个内容,但是在上篇评论里,有人说我的一篇太长了,确实,如果太长了,没有多少人能有耐心看下去,而且看的时间太长对眼睛也不好,在办公室里也不好意思老顶着屏幕看博客吧,boss看了也不好啊,所以这篇就光说一个关联了,那看来这个How do I原计划的三篇是不能完成了。其实文章有点长,看起来应该很快,没有什么难度的内容,而且我是以讲话的风格写的,本系列的内容我的计划是把Linq讲的透透彻彻的,从表面上如何使用,到后面是怎么实现的都说一遍,所以每一篇都是整个系列的一个元组。