c# - 在 SuiteTalk 中更优雅地计算 SalesOrder 项目
问题描述
我正在使用 SuiteTalk 为基于 NetSuite 的应用程序创建后端。我正在尝试计算 SalesOrders 中的项目总数。
我的问题是,在执行搜索操作以获取所有 SalesOrders 时,返回的对象在转换为 a (使用和手动)Record[]
时会失去精度。就我而言,这意味着在尝试访问 itemList 字段时会出现空引用异常。SalesOrder[]
Array.ConvertAll(...)
我的最终解决方案如下:
for (SearchResult searchResult = _service.search(salesOrderSearch); searchResult.pageIndex <= searchResult.totalPages; searchResult = _service.searchNext()) {
if (searchResult.status.isSuccess) {
// Convert Record[] to SalesOrder[]. Note that direct conversion causes some fields to become Null
SalesOrder[] salesOrdersNull = Array.ConvertAll(searchResult.recordList, item => (SalesOrder)item);
// To avoid the null issue, send a get request for each order by its internalId
foreach (SalesOrder salesOrderNull in salesOrdersNull) {
SalesOrder salesOrder = getSalesOrder(salesOrderNull.internalId);
// Increment the count by the total number of items
count += salesOrder.itemList.item.Length;
}
} else {
string errorCodes = Helpers.generateErrorString(searchResult.status.statusDetail);
throw new SuiteTalkServiceException("count Sales Order Lines. Failed with error code(s) " + errorCodes);
}
}
然而,这对每个销售订单都调用了一个获取请求,这意味着它需要一个时间并且非常不雅。我缺少更优雅的解决方案吗?有没有其他人有类似的问题,还是我很密集?
Record 的类定义是:
public abstract partial class Record {
private string[] nullFieldListField;
/// <remarks/>
[System.Xml.Serialization.XmlArrayItemAttribute("name", IsNullable=false)]
public string[] nullFieldList {
get {
return this.nullFieldListField;
}
set {
this.nullFieldListField = value;
}
}
}
SalesOrder 的类定义有几千行代码,但SchemaBrowser 条目相当清晰。
解决方案
我在这里找到了我的问题的答案。
本质上,为了防止itemList
字段变为null
,您必须将searchPreferences.bodyFieldsOnly
字段设置为false
。现在运行时间是我解决方案时间的 1/10。
推荐阅读
- java - 如何使用 ByteBuddy 拦截方法,就像在 CGLIB 中使用 MethodInterceptor 调用 MethodProxy.invokeSuper(...)
- javascript - 无法将侦听器添加到由另一个按钮创建的按钮
- swift - 如何快速将下载文件转发到我的应用程序?
- sql - 使用 SELECT 查询检查具有单个值的多个列
- c# - 如何打印具有属性的对象列表?
- c# - 如何在 C# 中使用 IText7 在现有 pdf 的顶部添加条形码?
- oracle - ORA-01873: 使用 EXTRACT 函数时区间的前导精度太小
- c++ - 数组值意外更改
- google-apps-script - 有没有办法在保留文本格式的同时替换 TextBox 形状内的文本?
- django-models - django 模型中使用的变量是类变量还是实例变量?