Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在Azure函数中查询外部表_C#_Azure_Azure Functions - Fatal编程技术网

C# 在Azure函数中查询外部表

C# 在Azure函数中查询外部表,c#,azure,azure-functions,C#,Azure,Azure Functions,我创建了一个Azure函数(C#)来从本地SQL Server数据表中摄取数据。我使用了实验性的外部表连接器(技术名称为ApiHubbable) 连接器从我的本地表中检索数据,但不执行查询(我始终拥有表的全部内容): 以下是实体定义: public class Event { public int Id { get; set; } public string Name { get; set; } public DateTime LastUpdate { get; set;

我创建了一个Azure函数(C#)来从本地SQL Server数据表中摄取数据。我使用了实验性的外部表连接器(技术名称为ApiHubbable)

连接器从我的本地表中检索数据,但不执行查询(我始终拥有表的全部内容):

以下是实体定义:

public class Event
{
    public int Id { get; set; }
    public string Name { get; set; }
    public DateTime LastUpdate { get; set; }
}
什么语言用于表示查询?奥达塔?另一个?有样品吗?
此功能是否已实现?

过滤器用OData“语言”(language)表示,因为与本地SQL Server的连接使用与Logic App相同的数据网关(过滤器在Logic App中用OData表示SQL连接器)

以下是一个查询示例:

$top=1000&$orderby=LastUpdate&$filter=year(LastUpdate) gt 2016 or (year(LastUpdate) eq 2016 and month(LastUpdate) gt 11 or (month(LastUpdate) eq 11 and day(LastUpdate) gt 3 or (day(LastUpdate) eq 3 and hour(LastUpdate) gt 11 or (hour(LastUpdate) eq 11 and minute(LastUpdate) gt 15 or (minute(LastUpdate) eq 15 and second(LastUpdate) ge 2)))))
注意:日期比较非常复杂,因为OData/Data Gateway在datetimeoffset(T-SQL类型)中转换datetime。如果表字段的类型为datetime,则可能会出现一些问题

这提供了一个工具,可以通过图形工具帮助您构建请求

最后,以下是用于构建过滤器最后一部分的代码:

public static string BuildDateFilter(string fieldName, DateTime dateToCompare)
{
    StringBuilder filterbuilder = new StringBuilder();
    filterbuilder.Append($"year({fieldName}) gt {dateToCompare.Year} or ("); // Or Year
    filterbuilder.Append($"year({fieldName}) eq {dateToCompare.Year} and ("); //And Year
    filterbuilder.Append($"month({fieldName}) gt {dateToCompare.Month} or ("); //Or Month
    filterbuilder.Append($"month({fieldName}) eq {dateToCompare.Month} and ("); //And Month
    filterbuilder.Append($"day({fieldName}) gt {dateToCompare.Day} or ("); //Or Day
    filterbuilder.Append($"day({fieldName}) eq {dateToCompare.Day} and ("); //And Day
    filterbuilder.Append($"hour({fieldName}) gt {dateToCompare.Hour} or ("); //Or Hour
    filterbuilder.Append($"hour({fieldName}) eq {dateToCompare.Hour} and ("); //And Hour
    filterbuilder.Append($"minute({fieldName}) gt {dateToCompare.Minute} or ("); //Or Minute
    filterbuilder.Append($"minute({fieldName}) eq {dateToCompare.Minute} and ("); //And Minute
    filterbuilder.Append($"second({fieldName}) ge {dateToCompare.Second}");
    filterbuilder.Append(")"); //And Minute
    filterbuilder.Append(")"); //Or Minute
    filterbuilder.Append(")"); //And Hour
    filterbuilder.Append(")"); //Or Hour
    filterbuilder.Append(")"); //And Day
    filterbuilder.Append(")"); //Or Day
    filterbuilder.Append(")"); //And Month
    filterbuilder.Append(")"); //Or Month
    filterbuilder.Append(")"); //And Year
    filterbuilder.Append(")"); //Or Year    
    return filterbuilder.ToString();
}

过滤器用OData“语言”(language)表示,因为与本地SQL Server的连接使用与Logic App相同的数据网关(过滤器在Logic App中用OData表示,用于SQL连接器)

以下是一个查询示例:

$top=1000&$orderby=LastUpdate&$filter=year(LastUpdate) gt 2016 or (year(LastUpdate) eq 2016 and month(LastUpdate) gt 11 or (month(LastUpdate) eq 11 and day(LastUpdate) gt 3 or (day(LastUpdate) eq 3 and hour(LastUpdate) gt 11 or (hour(LastUpdate) eq 11 and minute(LastUpdate) gt 15 or (minute(LastUpdate) eq 15 and second(LastUpdate) ge 2)))))
注意:日期比较非常复杂,因为OData/Data Gateway在datetimeoffset(T-SQL类型)中转换datetime。如果表字段的类型为datetime,则可能会出现一些问题

这提供了一个工具,可以通过图形工具帮助您构建请求

最后,以下是用于构建过滤器最后一部分的代码:

public static string BuildDateFilter(string fieldName, DateTime dateToCompare)
{
    StringBuilder filterbuilder = new StringBuilder();
    filterbuilder.Append($"year({fieldName}) gt {dateToCompare.Year} or ("); // Or Year
    filterbuilder.Append($"year({fieldName}) eq {dateToCompare.Year} and ("); //And Year
    filterbuilder.Append($"month({fieldName}) gt {dateToCompare.Month} or ("); //Or Month
    filterbuilder.Append($"month({fieldName}) eq {dateToCompare.Month} and ("); //And Month
    filterbuilder.Append($"day({fieldName}) gt {dateToCompare.Day} or ("); //Or Day
    filterbuilder.Append($"day({fieldName}) eq {dateToCompare.Day} and ("); //And Day
    filterbuilder.Append($"hour({fieldName}) gt {dateToCompare.Hour} or ("); //Or Hour
    filterbuilder.Append($"hour({fieldName}) eq {dateToCompare.Hour} and ("); //And Hour
    filterbuilder.Append($"minute({fieldName}) gt {dateToCompare.Minute} or ("); //Or Minute
    filterbuilder.Append($"minute({fieldName}) eq {dateToCompare.Minute} and ("); //And Minute
    filterbuilder.Append($"second({fieldName}) ge {dateToCompare.Second}");
    filterbuilder.Append(")"); //And Minute
    filterbuilder.Append(")"); //Or Minute
    filterbuilder.Append(")"); //And Hour
    filterbuilder.Append(")"); //Or Hour
    filterbuilder.Append(")"); //And Day
    filterbuilder.Append(")"); //Or Day
    filterbuilder.Append(")"); //And Month
    filterbuilder.Append(")"); //Or Month
    filterbuilder.Append(")"); //And Year
    filterbuilder.Append(")"); //Or Year    
    return filterbuilder.ToString();
}

请问您是如何将查询包括在ListentiesAsync方法中的?这是有效的:
Query=Query.Parse($top=50”);var list=wait inputable.listentiesasync(查询)这不是:
Query=Query.Parse(“$filter=Id eq 5”);var list=wait inputable.listentiesasync(查询)可能没有实现过滤?请问您是如何将查询包括在ListentiesAsync方法中的?这是有效的:
Query=Query.Parse($top=50”);var list=wait inputable.listentiesasync(查询)这不是:
Query=Query.Parse(“$filter=Id eq 5”);var list=wait inputable.listentiesasync(查询)可能未实现过滤?