Пример #1
0
 // for test purposes only. normally you would add arguments here (request/query)
 public IReadOnlyCollection <TestEntity> FindMany(string value)
 => EntityRetriever.FindMany(new SelectCommandBuilder()
                             .Select("*")
                             .From("MyTable")
                             .Where("Field = @Value")
                             .AppendParameter("Value", value)
                             .Build());
Пример #2
0
 // for test purposes only. normally you would add arguments here (request/query)
 public TestEntity?FindOne()
 => EntityRetriever.FindOne(new SelectCommandBuilder()
                            .Select("*")
                            .WithTop(1)
                            .From("MyTable")
                            .Where("Field = Value")
                            .Build());
Пример #3
0
 // for test purposes only. normally you would add arguments here (request/query)
 public IPagedResult <TestEntity> FindPaged(int offset, int pageSize)
 => EntityRetriever.FindPaged(new PagedSelectCommandBuilder()
                              .Select("*")
                              .From("MyTable")
                              .OrderBy("Name")
                              .Skip(offset)
                              .Take(pageSize)
                              .Build());
Пример #4
0
        private IEnumerable <T> GetAllEntitiesAsync(IOrganizationService service, QueryExpression qe, int?maxCount, int?pageSize)
        {
            var          page        = qe.PageInfo;
            IAsyncResult asyncResult = null;

            EntityRetrievingMethod = GetEntitiesWithCookie;
            int count = 0;

            if (maxCount != null && pageSize == null && maxCount < DEFAULT_PAGE_SIZE)
            {
                // Updte page Size to Max Count to limit the number of records retrieved
                pageSize = maxCount;
            }

            // Check for page Size / Max Count Settings
            if (maxCount < pageSize)
            {
                pageSize = maxCount;
            }

            if (pageSize != null && pageSize > 0)
            {
                page.Count = pageSize.Value;
            }

            page.PageNumber   = 1;
            page.PagingCookie = null;

            var response = GetEntitiesWithCookie(service, qe);

            while (response.MoreRecords && response.Entities != null && (maxCount == null || maxCount.Value <= count))
            {
                UpdatePageCount(page, ref count, maxCount);
                page.PageNumber++;
                page.PagingCookie = response.Cookie;

                // Perform Async call for next set, while yield returning current set
                try
                {
                    asyncResult = EntityRetrievingMethod.BeginInvoke(service, qe, null, this);

                    // Retrieve all records from the result set.
                    foreach (T entity in response.Entities)
                    {
                        yield return(entity);
                    }
                }
                finally
                {
                    if (asyncResult != null)
                    {
                        response = EntityRetrievingMethod.EndInvoke(asyncResult);
                        asyncResult.AsyncWaitHandle.Close();
                    }
                }
            }

            if (response.Entities == null)
            {
                yield break;
            }
            else
            {
                foreach (T entity in response.Entities)
                {
                    yield return(entity);
                }
            }
        }
Пример #5
0
 public IPagedResult <TEntity> FindAllPaged(int offset, int pageSize)
 => EntityRetriever.FindPaged(PagedEntitySelectCommandProvider.CreatePaged <TEntity>(DatabaseOperation.Select, offset, pageSize));
Пример #6
0
 public IReadOnlyCollection <TEntity> FindAll()
 => EntityRetriever.FindMany(EntitySelectCommandProvider.Create <TEntity>(DatabaseOperation.Select));
Пример #7
0
 public TEntity?Find(TIdentity identity)
 => EntityRetriever.FindOne(IdentitySelectCommandProvider.Create(identity, DatabaseOperation.Select));
        private IEnumerable <T> GetAllEntitiesInstance(IOrganizationService service, QueryExpression qe, int?maxCount, int?pageSize, bool async)
        {
            var          page        = qe.PageInfo;
            IAsyncResult asyncResult = null;

            EntityRetrievingMethod = GetEntitiesWithCookie;
            var count = 0;

            if (maxCount != null && pageSize == null && maxCount < DefaultPageSize)
            {
                // Update page Size to Max Count to limit the number of records retrieved
                pageSize = maxCount;
            }

            // Check for page Size / Max Count Settings
            if (maxCount < pageSize)
            {
                pageSize = maxCount;
            }

            if (pageSize != null && pageSize > 0)
            {
                page.Count = pageSize.Value;
            }

            page.PageNumber   = 1;
            page.PagingCookie = null;

            var response = GetEntitiesWithCookie(service, qe);

            while (response.MoreRecords && response.Entities != null && (maxCount == null || maxCount.Value <= count))
            {
                UpdatePageCount(page, ref count, maxCount);
                page.PageNumber++;
                page.PagingCookie = response.Cookie;

                // Perform Async call for next set, while yield returning current set
                try
                {
                    // If async, begin request to get new entities before yielding results
                    if (async)
                    {
                        asyncResult = EntityRetrievingMethod.BeginInvoke(service, qe, null, this);
                    }
                    // Retrieve all records from the result set.
                    foreach (var entity in response.Entities)
                    {
                        yield return(entity);
                    }

                    // If sync, wait until all entities have been returned, then get entities
                    if (!async)
                    {
                        response = GetEntitiesWithCookie(service, qe);
                    }
                }
                finally
                {
                    if (asyncResult != null)
                    {
                        response = EntityRetrievingMethod.EndInvoke(asyncResult);
                        asyncResult.AsyncWaitHandle.Close();
                    }
                }
            }

            if (response.Entities == null)
            {
                yield break;
            }

            foreach (var entity in response.Entities)
            {
                yield return(entity);
            }
        }