【发布时间】:2018-10-11 22:16:23
【问题描述】:
我需要一些帮助来过滤 SQL WIQL 查询。如何修改下面的代码以忽略具有空模型值的字段?例如,如果用户只想过滤一个像工作项类型这样的字段而忽略状态字段?任何帮助将不胜感激。
public async Task<ActionResult> Method(filterModel model)
{
VssConnection connection = new VssConnection(new
Uri(vstsCollectionUrl), new VssClientCredentials());
WorkItemTrackingHttpClient witClient = connection.GetClient<WorkItemTrackingHttpClient>();
Wiql query = new Wiql() { Query = "SELECT [Id], [Title] FROM workitems WHERE [Work Item Type] = '" + model.workitem + "' &&
[State] = '"+ model.state + "'"};
WorkItemQueryResult queryResults = witClient.QueryByWiqlAsync(query).Result;
if (queryResults == null || queryResults.WorkItems.Count() == 0)
{
Console.WriteLine("Query did not find any results");
}
}
【问题讨论】:
-
你有比这更大的问题......你的查询没有参数化,这是一个等待发生的 SQL 注入攻击,在这里了解更多>>>> blogs.msdn.microsoft.com/sqlphp/2008/09/30/…
-
是的,我从 Microsoft 网站上关于如何使用 tfs Web API 的示例中获取了这段代码。只是想知道如何修改。
-
@AydinAdn 这是针对 Azure Dev Ops 的查询 - 正式的 VSTS。 WIQL 具有类似 SQL 的查询语法,但它不是真正的 SQL,并且不支持参数。 docs.microsoft.com/en-us/rest/api/vsts/wit/wiql/…
-
OP 您将需要创建代表不同过滤器场景的多个查询,然后使用您的过滤器来确定执行哪一个。您的查询将是包含过滤器场景的预定义字符串文字。或者根据模型的值动态创建 SQL 查询。
-
@fourwhey 哎呀,当我阅读 SQL 查询时,我没有费心阅读整个代码,只阅读包含查询的行。感谢您提供链接,将继续阅读此内容
标签: c# azure-devops filtering wiql