光脚丫学LINQ(037):由两个一对多的关系跨越联接表实体类访问多对多关系数据
视频演示:http://u.115.com/file/f28d7bc446
演示重点
据我所知,LINQ to SQL应该是没有直接提供多对多关系映射的支持。
不过,如果能够将两个一对多的关系拼合在一起的话,也能够间接的实现多对多的映射关系。
在这个演示中,创建3个实体类,其中一个是映射到链接表的实体类。
其他两个实体类互相之间没有什么直接的关系,
而是通过和链接表实体类分别建立起一对多的映射关系,
从而达到这两个实体类之间的链接。
具体的细节请参看演示视频。
研习记录
具体要实现的效果是这样的:通过一个客户对象来获取此客户所有订购过的产品,
而通过一个产品对象来获取订购此产品的所有客户。
根据微软的说法,像这种多对多的映射关系,一般情况下会涉及到一个叫做联接表的数据表,
其目的在于联接两个数据表以实现多对多的关系。
当前代码中建立的这种映射关系,
实际上是两个被联接的数据表映射的实体类分别与映射联接表的实体类建立一对多的映射关系。
单一方通常是被联接的数据表映射的实体类,而集合方则是映射联接数据表的实体类。
通过这样的两个一对多的映射关系,从而跨越联接表实体类建立起被联接的两个实体类之间的多对多的关系。
然而这种做法的缺陷就是,在调用代码的时候,必须得要跨越联接表实体类对象,否则将无法获取相关联的数据。