Публикация
Terrasoft.Common.InvalidObjectStateException: Превышено ограничение 20000 записей при выгрузке данных объекта
2 сентября 2021 10:00
using System; using System.Collections.Generic; using Terrasoft.Core; using Terrasoft.Core.DB; using Terrasoft.Core.Entities; namespace Norbit.Crm.EsPlus.Common { /// <summary> /// Методы расширения для ESQ. /// </summary> public static class EsqExtensions { /// <summary> /// Постраничное чтение ESQ запроса. /// </summary> /// <param name="esq">Запрос.</param> /// <param name="userConnection">Пользовательское подключение.</param> /// <param name="rowCount">Количество считываемых записей за один раз(по умолчанию 1000).</param> /// <returns>Коллекция объектов из запроса.</returns> public static List<Entity> GetEntityCollectionPaginatedReading( this EntitySchemaQuery esq, UserConnection userConnection, EntitySchemaQueryOptions options = null, int rowCount = 1000) { if (esq == null) { throw new ArgumentNullException(nameof(esq)); } if (userConnection == null) { throw new ArgumentNullException(nameof(userConnection)); } var entityCollection = new List<Entity>(); esq.UseOffsetFetchPaging = true; /// Использовать постраничное чтение. var esqOptions = options ?? new EntitySchemaQueryOptions /// Настройки получения коллекции. { PageableRowCount = rowCount, /// Количество считываемых записей. RowsOffset = 0, /// Количество записей, которые необходимо пропустить PageableDirection = PageableSelectDirection.Next, PageableConditionValues = new Dictionary<string, object>() }; var entities = esq.GetEntityCollection(userConnection, esqOptions); while (entities.Count > 0) { foreach (var entity in entities) { entityCollection.Add(entity); } esqOptions.RowsOffset += esqOptions.PageableRowCount; esq.ResetSelectQuery(); /// Обнуление результата запроса. entities = esq.GetEntityCollection(userConnection, esqOptions); } return entityCollection; } } }
7 сентября 2021 11:06
Есть подозрение. что поможет
PageableDirection = PageableSelectDirection.First при первом запросе.
потом сменить на Next
Показать все комментарии
Войдите или зарегистрируйтесь, что бы комментировать