回答

收藏

Linq to SQL外键

技术问答 技术问答 243 人阅读 | 0 人回复 | 2023-09-12

数据库表的DDL:1 d- w% ~$ @, p1 k; x$ l: x
                Users:    id - int - identity    name - varchar - unique    PCs:    id - int - idnetity    name - varchar - unique    userid - FK to Users    Apps:    id - int - identity    name - varchar    pcid - FK to PCs我在Visual Studio 2008中使用Linq To SQL创建了一个设计器DataContext。1 e. }4 |9 m' [4 r5 d7 ]6 x
我想执行这个查询:3 k; m) D0 M9 C! |- B  q
select  users.name, pcs.name, apps.namefrom  users u  join pcs p on p.userid = u.id  join apps a on a.pcid = p.id在另一个线程中,我告诉我,我在线程中发布了一个答案,以下内容不正确,并创建了交叉连接。
6 p; b9 z; D5 l0 Z) N$ `: yvar query = from u in db.Users // gets all users        from p in u.PCs // gets all pcs for user        from a in p.Apps // gets all apps for pc        select new                                                                                                                                                                                                                                                                                                                                                                                                             username = u.Name,           pcname = p.Name,           appname = a.Name      当我执行此查询时,我得到了正确的结果。每个表中两个记录的交叉连接应返回8个记录,但我的查询正确返回两个记录。
; e% ~- u: m2 e/ |; O/ V我很幸运,还是那个人告诉我我错了?
* i# Q2 t3 I' ]- _  R                                                               
& ~0 ]. q4 {2 k- _    解决方案:
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则