gpt4 book ai didi

sql - 我可以获得从 LinqDataSource 生成的 T-SQL 查询吗?

转载 作者:行者123 更新时间:2023-12-05 01:23:45 27 4
gpt4 key购买 nike

我正在使用 LinqDataSource 来填充网格。但是现在我需要 LinqDataSource 生成的 SQL 查询来传递整个方法(不,我不能修改方法以不需要 SQL 查询)。

有没有办法从实例化和配置的 LinqDataSource 中获取生成的 SQL 查询?

最佳答案

希望这对您有所帮助。

使用下面的函数将返回一个 SqlQueryText您可以从该对象重建查询。

  • 要获取可以使用的 sql 文本,请使用 .Text 属性
  • 获得通过您可以使用 .Params 属性的参数

        public static SqlQueryText GetFullQueryInfo(DataContext dataContext, IQueryable query)
    {
    DbCommand dbCommand = dataContext.GetCommand(query);

    var result = new SqlQueryText();

    result.Text = dbCommand.CommandText;
    int nParams = dbCommand.Parameters.Count;
    result.Params = new ParameterText[nParams];
    for (int j = 0; j < nParams; j++)
    {
    var param = new ParameterText();
    DbParameter pInfo = dbCommand.Parameters[j];
    param.Name = pInfo.ParameterName;
    param.SqlType = pInfo.DbType.ToString();
    object paramValue = pInfo.Value;
    if (paramValue == null)
    {
    param.Value = null;
    }
    else
    {
    param.Value = pInfo.Value.ToString();
    }
    result.Params[j] = param;
    }
    return result;
    }

    举个例子

    var results = db.Medias.Where(somepredicatehere);ClassThatHasThisMethod.GetFullQueryInfo(yourdatacontexthere, results);

编辑:

抱歉忘记包含 SqlQueryText 数据结构

public struct SqlQueryText
{
public ParameterText[] Params;
public string Text;
}

public struct ParameterText
{
public string Name;
public string SqlType;
public string Value;
}

关于sql - 我可以获得从 LinqDataSource 生成的 T-SQL 查询吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/533343/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com