forked from simplefx/Simple.OData
-
Notifications
You must be signed in to change notification settings - Fork 202
Expanding results with linked entries
object edited this page Feb 11, 2013
·
23 revisions
Using Expand clause it's possible to expand results with associated data. Expanded entries must be defined as relationships in OData service schema.
var x = ODataFilter.Expression;
var category = client
.From("Categories")
.Filter(x.CategoryName == "Beverages")
.Expand("Products")
.FindEntry();
Assert.Equal("Beverages", category["CategoryName"]);
Assert.True((category.Products as IDictionary).Count > 0);
Request URI: GET Categories?$filter=CategoryName+eq+%27Beverages%27&$expand=Products&$top=1
var categories = client
.From("Categories")
.Expand("Products")
.FindEntries();
Assert.True(categories.Count > 0);
Assert.True((categories[0]["Products"] as as IDictionary).Count > 0);
Request URI: GET Categories?expand=Products
var products = client
.From("Products")
.Expand("Category")
.FindEntries();
Assert.True(products.Count > 0);
Assert.Equal("Beverages", (products[0]["Category"] as IDictionary).CategoryName);
Request URI: GET Products?$expand=Category
var customer = client
.From("Customer")
.Get("ALFKI")
.Expand("Orders")
.FindEntry();
Assert.Equal("ALFKI", customer["CustomerID"]);
Assert.True(customer.Orders.Count > 0);
Request URI: GET Customers(%27ALFKI%27)?$expand=Orders
var employees = client
.From("Employees")
.Expand("Subordinates")
.FindEntries();
Assert.True(employees.Count > 0);
Assert.True((employees[0]["Subordinates"] as IDictionary).Count == 0);
Assert.True((employees[0]["Subordinates"] as IDictionary).Count > 0);
Request URI: GET Employees?$expand=Subordinates
var x = ODataFilter.Expression;
var employee = client
.From("Employees")
.Filter(x.FirstName == "Nancy" && x.LastName == "Davolio")
.Expand("Superior")
.FindEntries();
Assert.NotNull(employee);
Assert.NotNull(employee["Superior"]);
Request URI: GET Employees?$filter=(FirstName+eq+%27Nancy%27+and+LastName+eq+%27Davolio%27)&$expand=Superior&$top=1
See also:
Retrieving linked entries without fetching its owners
Retrieving data