我试图添加一个查询到离线提供商如下。我正在尝试为我的实体的DateTime属性添加一个筛选条件。代理生成对象和CommonUtility.getDefaultStartDateEndDate().startDate
的startdate属性的数据类型相同- Local-DateTime
try offlineODataProvider.add(definingQuery: OfflineODataDefiningQuery(name: MobileServiceMetadata.EntitySets.svsOrderList.entityType.localName, query:
DataQuery().from(MobileServiceMetadata.EntitySets.svsOrderList).where(SvsOrderListType.plannedStartDate.greaterThan(CommonUtility.getDefaultStartDateEndDate().startDate)).selectAll(),automaticallyRetrievesStreams: false));
但是它给出一个错误,说明OData查询中存在语法错误。因此,当我检查错误描述中的URL时,它就像下面一样。
https://mobileURL.com/MService/svsOrderList?$select=&$filter=(计划_开始_日期gt 2018-09- 13 T15:45:51.950))
所以url中有一个错误,因为Datetime值应该转换为OData URL中的datetime,如下所示(正确的URL必须是)
https://mobileURL.com/MService/svsOrderList?$select=&$filter=(计划_开始_日期gt日期时间2018-09- 13 T15:45:51.950))
这个转换应该由SDK自己完成不知道如何解决这个问题?
有什么办法解决这个问题吗?
1条答案
按热度按时间u4dcyp6a1#
我假设您使用的是OData Service V4(因为过滤器中不包括dateTime语句)?
因此,问题不在于缺少术语“datetime”,而是“startdate”格式。看起来“CommonUtility.getDefaultStartDateEndDate().startDate”返回了DateTime,而不是所需的DateTimeOffset
正确的URL应该是https://mobileURL.com/MService/svsOrderList。$select=*&$filter=(PLANNED_START_DATE gt 2018-09- 13 T15:45:51.950Z)),如果startDate返回DateTimeOffset,则应自动生成