我在联系人和列表之间的 EF Code First 中存在多对多关系。ProxyCreation 和 LazyLoading 被禁用以允许实体的序列化。
我有一个查询,旨在返回给定列表中的联系人。
// GET api/Contacts
[Queryable]
public IQueryable<Contact> GetContacts(int bulkListId)
{
var bulkList = db.BulkLists.Include(c => c.Contacts).Where(c => c.ID == bulkListId).SingleOrDefault();
if (bulkList == null)
throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.NotFound));
return bulkList.Contacts.AsQueryable().OrderBy(c => c.ID).Include(c => c.AddressBookType).Include(c => c.BulkLists);
}
虽然这有效,但它并没有按预期工作。它会生成给定列表中的正确联系人集,但这些联系人仅在其关系的 Lists 属性中填充了该列表。因此,当它被序列化并返回给客户端时,它会隐藏联系人所属的其他列表。
我看不到查询是如何以这种方式过滤它的,以及我如何将其更改为包含完整的列表集。任何建议将不胜感激。