Example #1
0
        internal static IQueryable FromSql(Object dataContext, Type clrEntityType, IEntityType entityType, String sql, Object?[] parameters)
        {
            IQueryable queryable             = GetEntitySet(dataContext, clrEntityType);
            var        dbContextDependencies = (IDbContextDependencies)dataContext;
            var        expression            = new FromSqlQueryRootExpression(dbContextDependencies.QueryProvider, entityType, sql, Expression.Constant(parameters));

            return(queryable.Provider.CreateQuery(expression));
        }
        public static string StringifyFromSqlExpression(FromSqlQueryRootExpression expression)
        {
            EnsureArgument.IsNotNull(expression, nameof(expression));

            var expressionSql        = expression.Sql;
            var expressionParameters = (object[])((ConstantExpression)expression.Argument).Value;
            var parts = new List <string>();

            parts.Add($"Invocation sql: '{expressionSql}'");
            parts.Add("Invocation Parameters:");
            parts.Add(ParameterMatchingHelper.StringifyParameters(expressionParameters));
            return(string.Join(Environment.NewLine, parts));
        }
        private static bool SqlMatchesFromSqlExpression(string sql, FromSqlQueryRootExpression expression)
        {
            EnsureArgument.IsNotNull(expression, nameof(expression));

            var expressionSql = expression.Sql;
            var parts         = new List <string>();

            parts.Add($"Invocation sql: '{expressionSql}'");
            parts.Add($"Set up sql: '{sql}'");
            Logger.LogDebug(string.Join(Environment.NewLine, parts));

            var result = expressionSql.Contains(sql, StringComparison.OrdinalIgnoreCase);

            Logger.LogDebug("Match? {result}", result);

            return(result);
        }
        public static bool SqlAndParametersMatchFromSqlExpression(string sql, IEnumerable <object> parameters, FromSqlQueryRootExpression expression)
        {
            EnsureArgument.IsNotNull(expression, nameof(expression));
            EnsureArgument.IsNotNull(parameters, nameof(parameters));

            var result = SqlMatchesFromSqlExpression(sql, expression) &&
                         ParameterMatchingHelper.DoInvocationParametersMatchSetUpParameters(parameters, (object[])((ConstantExpression)expression.Argument).Value);

            Logger.LogDebug("Match? {result}", result);

            return(result);
        }