Customer
由于和之间存在多对多关联,CustomerGroup
因此还有一个所谓的联结表,假设CustomerGroupCustomer
具有CustomerId
和CustomerGroupId
。
如果此表只有这两个字段,EF 可以隐式使用它,这意味着CustomerGroup
可以有一个Customers
集合,在映射中您指示的CustomerGroupCustomer
是联结表。这是一个例子。你可以,但不是必须, map Customer.CustomerGroups
。当工作数据库优先时,这种隐式行为是默认行为。
但是,由于您CustomerId
只对 s 感兴趣,因此您可以决定建立一个常规的一对多关联CustomerGroup.CustomerGroupCustomers
。如果您处理此导航属性,则只需要一个连接并且查询非常简单。如果你有一个CustomerGroup
实例,你可以做
group.CustomerGroupCustomers.Select(c => c.CustomerId)
并且只会CustomerId
查询 s 。
如果你愿意,你可以Customers
直接通过做
group.CustomerGroupCustomers.Select(c => c.Customer)