Exemplo n.º 1
0
        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());
        }
Exemplo n.º 2
0
        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());
        }