我在服务器上有以下方法(RIA服务):
public IQueryable<Customer> GetCustomers()
{
return ObjectContext.Customers;
}
public IQueryable<Customer> GetCustomersWithInvoicesAndInvoiceItemsAsync()
{
return ObjectContext.Customers
.Include("Invoices.InvoiceItems");
}
这些项目作为IEnumerable&lt;&gt;加载在客户端上,让我们为CollectionA和CollectionB命名。我的问题是下一步:如果我在CollectionA中添加/删除客户,CollectionB将不会意识到它。编辑按预期工作,因为两个集合都包含相同的实体。有没有办法可以单独加载发票,并在客户端关联它们,所以我只会在一个客户集合上工作,而不是两个?
答案 0 :(得分:0)
服务方(GetCustomers方法旁边):
public IQueryable<Invoice> GetInvoicesAndInvoiceItemsAsync()
{
return ObjectContext.Invoices.Include("InvoiceItems");
}
客户端,在单独的电话中获取客户和发票后(IEnumerable
s):
var query = customers.Join(invoices, c => c.CustomerId, i => i.CustomerId,
(c,i) => Tuple.Create(c, i) );
这将为您提供客户 - 发票对的列表。或者使用GroupJoin:
var query = customers.GroupJoin(invoices, c => c.CustomerId, i => i.CustomerId,
(c,i) => Tuple.Create(c, i) );
这将为您提供客户 - 发票(复数)对的列表。