Skip to content

Get expression tree from query string

Maxim edited this page Mar 1, 2019 · 8 revisions
var optionsBuilder = new DbContextOptionsBuilder<OrderContext>();
optionsBuilder = optionsBuilder.UseSqlServer(@"Server=.\sqlexpress;Initial Catalog=OdataToEntity;Trusted_Connection=Yes");
var orderContext = new OrderContext(optionsBuilder.Options);

IEdmModel edmModel = new OrderDataAdapter().BuildEdmModel();
var queryExression = new OeQueryExpression(edmModel, "Customers?$filter=Address gt 'London'&$expand=Orders&$orderby=Country,Id");
Expression expression = queryExression.GetExpression(orderContext);
//$expand=Orders translate to Tuple<Customer, Order>
IQueryable<Tuple<Customer, Order>> query = orderContext.Customers.AsQueryable().Provider.CreateQuery<Tuple<Customer, Order>>(expression);
//translate Tuple<Customer, Order> to Customer and set navigation property Orders
List<Customer> customers = await queryExression.Materialize<Customer>(query).ToList();
Clone this wiki locally