Customer
と の間に多対多の関連付けCustomerGroup
があるため、いわゆるジャンクション テーブルもあります。たとえばCustomerGroupCustomer
、 と がCustomerId
ありCustomerGroupId
ます。
このテーブルにこれら 2 つのフィールドしかない場合、EF はそれを暗黙的に使用できます。つまり、マッピングでジャンクション テーブルであることを示すコレクションCustomerGroup
を持つことができます。ここに例があります。map はできますが、必須ではありません。データベース ファーストで作業する場合、この暗黙的な動作がデフォルトです。Customers
CustomerGroupCustomer
Customer.CustomerGroups
ただし、CustomerId
s のみに関心があるため、通常の 1 対多の関連付けを行うことができますCustomerGroup.CustomerGroupCustomers
。このナビゲーション プロパティに対処する場合、必要な結合は 1 つだけで、クエリは非常に軽量です。あなたがCustomerGroup
できるインスタンスがある場合
group.CustomerGroupCustomers.Select(c => c.CustomerId)
sのみCustomerId
が照会されます。
Customers
必要に応じて、次のようにして直接取得できます
group.CustomerGroupCustomers.Select(c => c.Customer)