diff --git a/src/FakeXrmEasy.Core/Query/QueryExpressionExtensions.cs b/src/FakeXrmEasy.Core/Query/QueryExpressionExtensions.cs index 8903f21b..b4291d11 100644 --- a/src/FakeXrmEasy.Core/Query/QueryExpressionExtensions.cs +++ b/src/FakeXrmEasy.Core/Query/QueryExpressionExtensions.cs @@ -80,7 +80,7 @@ internal static IQueryable ToQueryable(this QueryExpression qe, IXrmFake #endif #if FAKE_XRM_EASY_9 var aggregateExpressions = GetAggregateAttributeExpressions(qe); - hasAggregates = aggregateExpressions.Count > 0; + hasAggregates = aggregateExpressions?.Count > 0; ValidateAggregates(qe, aggregateExpressions); #endif @@ -147,7 +147,7 @@ internal static IQueryable ToQueryable(this QueryExpression qe, IXrmFake #if FAKE_XRM_EASY_9 private static List GetAggregateAttributeExpressions(QueryExpression qe) { - return qe.ColumnSet + return qe.ColumnSet? .AttributeExpressions .Where(ae => ae.AggregateType != XrmAggregateType.None) .ToList(); @@ -197,6 +197,11 @@ private static Entity TranslateAggregateExpressionsInSubSequence(IQueryable attributeExpressions) { + if (qe.ColumnSet == null) + { + return; + } + var hasAggregateAttributeExpressions = attributeExpressions.Count > 0; diff --git a/tests/FakeXrmEasy.Core.Tests/Query/QueryByAttribute/QueryByAttributeTests.cs b/tests/FakeXrmEasy.Core.Tests/Query/QueryByAttribute/QueryByAttributeTests.cs index 4f5927c2..e6fc6841 100644 --- a/tests/FakeXrmEasy.Core.Tests/Query/QueryByAttribute/QueryByAttributeTests.cs +++ b/tests/FakeXrmEasy.Core.Tests/Query/QueryByAttribute/QueryByAttributeTests.cs @@ -223,6 +223,35 @@ public void TopCount_is_respected_for_query_by_attribute() Assert.Equal(5, results.Entities.Count); } + [Fact] + public void Should_execute_a_query_without_a_specific_column_set() + { + var contact1 = new Contact + { + Id = Guid.NewGuid(), + LastName = "asdf" + }; + + var contact2 = new Contact + { + Id = Guid.NewGuid(), + LastName = "qwer" + }; + + _context.Initialize(new List { contact1, contact2 }); + + QueryByAttribute query = new QueryByAttribute("contact"); + query.PageInfo = new PagingInfo() + { + PageNumber = 1, + Count = 1, + ReturnTotalRecordCount = true + }; + var results = _service.RetrieveMultiple(query); + + Assert.Single(results.Entities); + Assert.Equal(2, results.TotalRecordCount); + } } } \ No newline at end of file