public static string ToSql <TEntity>(this IQueryable <TEntity> query) where TEntity : class
        {
            Microsoft.EntityFrameworkCore.Storage.IRelationalCommand command = GetCommand(query);

            string sql = command.CommandText;

            return(sql);
        }
        //link https://www.thetopsites.net/article/51583047.shtml



        public static IEnumerable <string> ToParameters <TEntity>(this IQueryable <TEntity> query) where TEntity : class
        {
            var dicRet = new List <string>();

            Microsoft.EntityFrameworkCore.Storage.IRelationalCommand command = GetCommand(query);
            foreach (var item in command.Parameters)
            {
                dicRet.Add($"@{item.InvariantName}");
            }

            return(dicRet);
        }
Пример #3
0
        //https://stackoverflow.com/a/51583047
        public static string ToSql <TEntity>(this IQueryable <TEntity> query) where TEntity : class
        {
            IEnumerator <TEntity> enumerator = query.Provider.Execute <IEnumerable <TEntity> >(query.Expression).GetEnumerator();
            object                    relationalCommandCache = enumerator.Private("_relationalCommandCache");
            SelectExpression          selectExpression       = relationalCommandCache.Private <SelectExpression>("_selectExpression");
            IQuerySqlGeneratorFactory factory = relationalCommandCache.Private <IQuerySqlGeneratorFactory>("_querySqlGeneratorFactory");

            QuerySqlGenerator sqlGenerator = factory.Create();

            Microsoft.EntityFrameworkCore.Storage.IRelationalCommand command = sqlGenerator.GetCommand(selectExpression);

            string sql = command.CommandText;

            return(sql);
        }