public static string ToWhereClause <T>(this PageRequest request, IEdmModel edm) where T : class { var filter = request?.Filter; if (string.IsNullOrWhiteSpace(filter)) { return(null); } var parser = new ODataUriParser(edm, new Uri($"{typeof(T).Name}?$filter={filter}", UriKind.Relative)); var filterClause = parser.ParseFilter(); var visitor = new RavenDbQueryNodeVisitor <T>(); filterClause.Expression.Accept(visitor); return(visitor.Builder.ToString()); }
public static string ToWhereClause <T, TKey>(this PageRequest request, Expression <Func <T, TKey> > keyDefinitionExpression) where T : class { var filter = request?.Filter; if (string.IsNullOrWhiteSpace(filter)) { return(null); } var builder = new ODataConventionModelBuilder(); var entitySet = builder.EntitySet <T>(typeof(T).Name); var entityType = entitySet.EntityType; entityType.HasKey(keyDefinitionExpression); var edm = builder.GetEdmModel(); var parser = new ODataUriParser(edm, new Uri($"{typeof(T).Name}?$filter={filter}", UriKind.Relative)); var filterClause = parser.ParseFilter(); var visitor = new RavenDbQueryNodeVisitor <T>(); filterClause.Expression.Accept(visitor); return(visitor.Builder.ToString()); }