记录一个 returns 在 Lightswitch HTML 中没有结果的查询

Log a query that returns no results in Lightswitch HTML

我想做的是,当用户进行搜索并且查询没有 return 结果时。我希望能够记录在另一个 table.

中搜索到的字符串

我正在尝试做的事情似乎应该是直截了当的...我的第一个方法是获取 PreprocessQuery 的计数。

我尝试过的示例:

    int count = 0;
    partial void QueryName_PreprocessQuery(string ParamName, ref IQueryable<TableName> query)
        {
            if (ParamName != null)
            {
                query = query.Where(a => a.PropertyName.Contains(ParamName));
                count = query.Count();
            }
        }

当我放置断点并单步执行此方法时。 count 始终为 0,而 query 始终为空。奇怪的是,这个查询仍然返回正确的结果。我尝试了各种不同的方法,甚至开始了一个新的 Lightswitch 项目,它只有一个屏幕和一个查询。结果相同。

我尝试过的另一个例子:

partial void QueryName_PreprocessQuery(string ParamName, ref IQueryable<TableName> query)
            {
                if (ParamName != null)
                {
                    count = query.Count(a => a.Serial_No.Contains(SerialNumber));                    
                }
            }

除了验证 query 为空且 count 为 0 之外,此方法实际上不执行任何操作。再次...正确的结果仍然显示在我的屏幕上。

所以这让我相信也许我不应该尝试在 _PreProcessQuery 方法中获取计数?

我相信你是对的。尝试将 QueryName_PreprocessQuery 更改为 QueryName_Executed。

QueryName_PreprocessQuery 在形成查询时和执行之前发生。

QueryName_Executed 在查询执行后立即调用,因此应该为您提供您要获取的信息。

您可以尝试这样的操作:

partial void QueryName_Executed(QueryExecutedDescriptor queryDescriptor)
    {
        int resultCount = queryDescriptor.Results.Count();
    }