EF Как соотнести уже загруженные сущности? - PullRequest
0 голосов
/ 02 апреля 2012

У меня есть следующие методы на сервере (службы RIA):

public IQueryable<Customer> GetCustomers()
{
    return ObjectContext.Customers;
}

public IQueryable<Customer> GetCustomersWithInvoicesAndInvoiceItemsAsync()
{
    return ObjectContext.Customers
        .Include("Invoices.InvoiceItems");
}

Эти элементы загружаются на клиент как IEnumerable <>, давайте назовем CollectionA и CollectionB. Моя проблема заключается в следующем: если я добавлю / удалю Клиента в CollectionA, CollectionB не узнает об этом. Редактирование работает должным образом, так как обе коллекции содержат одни и те же объекты. Можно ли как-то отдельно загружать счета-фактуры и связывать их в клиенте, чтобы я работал только с одним набором клиентов, а не с двумя?

1 Ответ

0 голосов
/ 02 апреля 2012

Сторона обслуживания (кроме метода GetCustomers):

public IQueryable<Invoice> GetInvoicesAndInvoiceItemsAsync()
{
    return ObjectContext.Invoices.Include("InvoiceItems");
}

Сторона клиента, после получения клиентов и счетов-фактур в отдельных вызовах (как IEnumerable с):

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) );

Это даст вам список пар Клиент - Счет (множественное число).

...