0
table Users
(與User.Id和 例如)table Visibility
(User1Id和User2Id,兩者都是外鍵的用戶表)table Contact
(User.Id與外鍵鏈接1:1聯繫到用戶)。
能見度表應允許用戶查看其他用戶的聯繫人以及他們自己。爲此,用戶1被允許查看用戶2的聯繫人(但反之亦然)。現在
,我想這樣的查詢,但顯然它不工作:
Contact.Where(c => c.UserId == userId || c.UserId IN c.User.Visibilities)
- 基本上就是我想要做的是返回1.有提供的用戶標識的所有聯繫人記錄(這很簡單,當然已經工作了)和返回與不同用戶關聯的所有聯繫人,但提供的用戶通過Visibility表中的User1:User2鏈接到該不同用戶。
爲了得到一個完整的例子去:
Users
=====
UserId Name
10 John
15 Sasha
20 Marcus
Visibility
==========
User1Id User2Id
10 20
Contact
=======
ContactId UserId Zip
1 10 23232
2 15 55555
3 20 92929
我想從什麼LINQ查詢返回查詢用戶名時10是聯繫人1
和3
基於一個事實,即用戶10
已經可以看到聯繫1
,並且由於Visibility
表還可以看到用戶20
的聯繫人3
。
Result (when querying for user 10)
======
ContactId UserId Zip
1 10 23232
3 20 92929
希望有道理嗎?
Visibilities必須映射到User2Id FK –