私は次のようにデータベースをセットアップしています (残念ながら、ここで図の画像を公開することは許可されていませんでしたので、説明する必要があります: 応答テーブル - RespondentID、QuestionID、ResponseOptionID が含まれています。
ResponsesInProperties (多対多テーブル) - ResponseID、ResponsePropertyID を含む
ResponsesInProperties テーブルには多対多の関係があります。もちろん、このテーブルはEFには表示されません。
「Country」と「Wave」の 2 つの応答プロパティ タイプと、対応する ResponeProperties「USA」、「UK」、「Wave2011」、「Wave2012」があるとします。
ここで、データベースから、米国と Wave2012 にあるすべての (重複していない) 応答を取得する必要があります。秘訣は、必要なすべての応答が Wave2012 と USA の両方にある必要があるということです。私はLINQ to SQLでこれを達成しようとしています。以下は、私が思いついたLinqで、正しいレコードを取得しますが、さまざまなプロパティに対して何度も表示されます。プロパティを制限すると、レコードがまったく得られません....
どんな助けでも大歓迎です!
var responses = from r in db.Responses
from rp in r.ResponseProperties
select new
{
RespondentID = r.RespondentID,
QuestionCode = r.Question.Code,
ResponseOptionCode = r.ResponseOption.Code,
ResponseOptionCodeName = r.ResponseOption.Text,
ResponsePropertyName = rp.Name,
ResponsePropertyTypeName = rp.ResponsePropertyType.Name
};