Skip to content

Commit e7d1534

Browse files
PaginateViaPrimaryKey: handle the case of emtpy key list (#350)
1 parent 5550aad commit e7d1534

2 files changed

Lines changed: 22 additions & 2 deletions

File tree

net/DevExtreme.AspNet.Data.Tests/PaginateViaPrimaryKeyTests.cs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,21 @@ public void RequiresPrimaryKey() {
9999
Assert.True(error is InvalidOperationException);
100100
}
101101

102+
[Fact]
103+
public void Bug349() {
104+
// https://github.com/DevExpress/DevExtreme.AspNet.Data/issues/349
105+
106+
var loadResult = DataSourceLoader.Load(new[] { new { ID = 1 } }, new SampleLoadOptions {
107+
PaginateViaPrimaryKey = true,
108+
PrimaryKey = new[] { "ID" },
109+
RequireTotalCount = true,
110+
Skip = 1,
111+
Take = 1
112+
});
113+
114+
Assert.Empty(loadResult.data);
115+
}
116+
102117
static string DataToString(object data) {
103118
return JsonConvert.SerializeObject(data).Replace("\"", "");
104119
}

net/DevExtreme.AspNet.Data/DataSourceExpressionBuilder.cs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,13 @@ Expression BuildCore(Expression expr, bool paginate = false, bool isCountQuery =
3535
var queryableType = typeof(Queryable);
3636
var genericTypeArguments = new[] { typeof(T) };
3737

38-
if(filterOverride != null || _context.HasFilter)
39-
expr = Expression.Call(queryableType, "Where", genericTypeArguments, expr, Expression.Quote(new FilterExpressionCompiler<T>(_guardNulls, _context.UseStringToLower).Compile(filterOverride ?? _context.Filter)));
38+
if(filterOverride != null || _context.HasFilter) {
39+
var filterExpr = filterOverride != null && filterOverride.Count < 1
40+
? Expression.Lambda(Expression.Constant(false), Expression.Parameter(typeof(T)))
41+
: new FilterExpressionCompiler<T>(_guardNulls, _context.UseStringToLower).Compile(filterOverride ?? _context.Filter);
42+
43+
expr = Expression.Call(queryableType, "Where", genericTypeArguments, expr, Expression.Quote(filterExpr));
44+
}
4045

4146
if(!isCountQuery) {
4247
if(!remoteGrouping) {

0 commit comments

Comments
 (0)