diff --git a/src/modules/Elsa.EntityFrameworkCore/Modules/Management/WorkflowDefinitionStore.cs b/src/modules/Elsa.EntityFrameworkCore/Modules/Management/WorkflowDefinitionStore.cs index fcd7efa94..2c6886075 100644 --- a/src/modules/Elsa.EntityFrameworkCore/Modules/Management/WorkflowDefinitionStore.cs +++ b/src/modules/Elsa.EntityFrameworkCore/Modules/Management/WorkflowDefinitionStore.cs @@ -140,7 +140,7 @@ public class EFCoreWorkflowDefinitionStore : IWorkflowDefinitionStore /// public async Task CountDistinctAsync(CancellationToken cancellationToken = default) { - return await _store.CountAsync(x => true, x => x.DefinitionId, cancellationToken); + return await _store.CountAsync(x => true, x => x.DefinitionId, cancellationToken); } /// @@ -193,7 +193,14 @@ public class EFCoreWorkflowDefinitionStore : IWorkflowDefinitionStore if (filter.Names != null) queryable = queryable.Where(x => filter.Names.Contains(x.Name!)); if (filter.UsableAsActivity != null) queryable = queryable.Where(x => EF.Property(x, "UsableAsActivity") == filter.UsableAsActivity); if (!string.IsNullOrWhiteSpace(filter.SearchTerm)) queryable = queryable.Where(x => x.Name!.Contains(filter.SearchTerm) || x.Description!.Contains(filter.SearchTerm) || x.Id.Contains(filter.SearchTerm) || x.DefinitionId.Contains(filter.SearchTerm)); - if (filter.IsSystem != null) queryable = queryable.Where(x => x.IsSystem == filter.IsSystem); + + // TEMP: IsSystem may be null when upgrading from older versions of Elsa to 3.2. See issue #5366. + // In a future version, we should remove this check and simply do queryable.Where(x => x.IsSystem == filter.IsSystem). + if (filter.IsSystem != null) + queryable = filter.IsSystem == true + ? queryable.Where(x => x.IsSystem == true) + : queryable.Where(x => x.IsSystem == false || x.IsSystem == null); + if (filter.IsReadonly != null) queryable = queryable.Where(x => x.IsReadonly == filter.IsReadonly); return queryable; } @@ -204,7 +211,7 @@ public class EFCoreWorkflowDefinitionStore : IWorkflowDefinitionStore if (pageArgs?.Limit != null) queryable = queryable.Take(pageArgs.Limit.Value); return queryable; } - + private class WorkflowDefinitionState { [JsonConstructor]