Я работаю над созданием серверной части для приложения на основе NetSuite с помощью SuiteTalk.Я пытаюсь подсчитать общее количество элементов в SalesOrders.
Моя проблема в том, что при выполнении операции поиска для получения всех SalesOrders возвращаемый объект Record[]
теряет точность при приведении к SalesOrder[]
(используя Array.ConvertAll(...)
и вручную).В моем случае это означает получение исключения Null Reference при попытке доступа к полю itemList.
Мое возможное решение было следующим:
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);
}
}
Однако это вызывает запрос get для каждогоЗаказ на продажу, т. Е. Он занимает много времени и очень не элегантен.Есть ли более элегантное решение, которое мне не хватает?У кого-нибудь еще была подобная проблема, или у меня проблема?
Определение класса для записи:
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 довольно понятна.