Если я вызываю службу OData, содержащую поставщиков и продукты, я могу запросить продукты, вызывающие .Expand («Поставщик»), которые будут заполнять свойство .Vendor каждого Продукта.WCF Odata. Expand Caching
Проблема, с которой я столкнулся, заключается в том, что если я запрашиваю Продукты без расширения Vendor, а затем запускает другой запрос на продукты, пытающиеся расширить Vendor, любые Продукты, которые кэшируются из предыдущего запроса, не заполняются.
Так простая демонстрация,
var products = client.Products.Expand("Vendor").ToList();
Вернется все продукты с собственностью поставщика населенной, как ожидалось.
Но после того, как
var products1 = client.Products.ToList();
var products2 = client.Products.Expand("Vendor").ToList();
products2
не будет заселена поставщиков, предположительно потому, что эти объекты продукта уже в кэше, поэтому WCF не мешает исследовать дальше, но просто возвращает то, что он имеет.
Я могу запустить client.LoadProperty() на каждом из них, но это боль и убьет производительность. Я могу создать новый DataServiceContext, но это кажется неправильным (хотя я не могу найти ничего, что явно говорит о продолжительности жизни одного из этих объектов).
Каков наилучший способ пойти сюда?