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); }