table Visibility
(User1IdとUser2Id、ユーザーにある外部キーの両方(User.Idと などで)
table Users
を持っていますテーブル)table Contact
(User.Idは外部キーと1:1の連絡先をユーザーに関連付けています)。
可視性テーブルは、ユーザーが自分だけでなく他ののユーザーの連絡先を表示できるようにしなければなりません。この目的のために、User1はUser2の連絡先を見ることができます(ただし、その逆はできません)。
さて、私はこのようなクエリを実行しようとしているが、明らかにそれは動作しません。
Contact.Where(c => c.UserId == userId || c.UserId IN c.User.Visibilities)
- 基本的に私は何をやろうとしていることは供給ユーザーIDを持っている1.すべての連絡先レコードを返すことです(それは簡単で、すでに当然のことです)とは、別のユーザーに関連付けられているすべての連絡先を返しますが、指定されたユーザーはVisibilityテーブルのUser1:User2を介してその別のユーザーにリンクされます。どのようなユーザーID 10を照会するとき、私はLINQクエリからの復帰を希望するユーザー10
が既に連絡先1
を見ることができるという事実に基づいてコンタクト1
と3
ある
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
:行くの完全な例を取得するには
、またVisibility
テーブルのため、ユーザー20
の連絡先3
を見ることができます。
Result (when querying for user 10)
======
ContactId UserId Zip
1 10 23232
3 20 92929
希望がありますか?
VisibilityはUser2Id FKにマッピングする必要があります –