Пример #1
0
        static Database()
        {
            For <DateTime>(b => {
                b.Property(x => x.Day, exp => FuncInternal.DatePart(ExtractField.Day, exp));
                b.Property(x => x.Month, exp => FuncInternal.DatePart(ExtractField.Month, exp));
                b.Property(x => x.Year, exp => FuncInternal.DatePart(ExtractField.Year, exp));
                b.Property(x => x.Hour, exp => FuncInternal.DatePart(ExtractField.Hour, exp));
                b.Property(x => x.Minute, exp => FuncInternal.DatePart(ExtractField.Minute, exp));
                b.Property(x => x.Second, exp => FuncInternal.DatePart(ExtractField.Second, exp));
                b.Property(x => x.Millisecond, exp => FuncInternal.DatePart(ExtractField.Milliseconds, exp));
                b.Property(x => x.Date, FuncInternal.Date);
            });

            For <string>(b => {
                b.Method <int, int, string>((x, start, cnt) => x.Substring(start, cnt), ExpressionBuilders.Substring);
                b.Method <string, bool>((x, str) => x.StartsWith(str), ExpressionBuilders.StartsWith);
                b.Method <string, bool>((x, str) => x.EndsWith(str), ExpressionBuilders.EndsWith);
                b.Method <string, bool>((x, str) => x.Contains(str), ExpressionBuilders.Contains);
                b.Method <string>(x => x.ToUpper(), ExpressionBuilders.ToUpper);
                b.Method <string>(x => x.ToLower(), ExpressionBuilders.ToLower);

                b.Method <string, bool>((x, str) => x.PgLike(str), ExpressionBuilders.Like);
                b.Method <string, bool>((x, str) => x.PgILike(str), ExpressionBuilders.ILike);
                b.Method <string, bool>((x, str) => x.PgRawLike(str), ExpressionBuilders.RawLike);
                b.Method <string, bool>((x, str) => x.PgRawILike(str), ExpressionBuilders.RawILike);
            });

            MethodsDatabase.Optimize();
            PropertiesDatabase.Optimize();
        }
Пример #2
0
 public void Method <T1, T2, T3, TR>(Expression <Func <T, T1, T2, T3, TR> > prop,
                                     Func <TypedExpression, TypedExpression, TypedExpression, TypedExpression, TypedExpression> converter) =>
 MethodsDatabase.Register(prop.Body, exps => converter(exps[0], exps[1], exps[2], exps[3]));