Open Closed

Table / Parameter limit in ABP.IO or bug in Parameter passing in Abp.io framework? #8846


User avatar
0
MartinEhv created

Check the docs before asking a question: https://abp.io/docs/latest --> Couldn't find anything
Check the samples to see the basic tasks: https://abp.io/docs/latest/samples --> Couldn't find anything
The exact solution to your question may have been answered before, and please first use the search on the homepage. --> Couldn't find anything
Provide us with the following info: Solution Configuration button. --> Not available for my solution. Further, the "Initialize Existing Solution" feature in Studio crashes.


  • ABP Framework version: v9.0.5

  • UI Type: Blazor Server/Hybrid

  • Database System: EF Core SQL Server

  • Tiered (for MVC) or Auth Server Separated (for Angular): Layered Blazor Monolith

  • Exception message and full stack trace:
    2 cases: NO EXCEPTION PASSED for the longest time. I've tried every type and combination of try/catch but i receive nothing.
    Then I found the boundary i think and got some logging (below)


First case 135 Properties/Fields in my table:

[14:32:56 INF] Executed DbCommand (15ms) [Parameters=[@__aaa128Max_Value_0='?' (DbType = Int32)], CommandType='Text', CommandTimeout='30']
SELECT COUNT_BIG(*)
FROM [AppCurrentOrderTwos] AS [a]
WHERE [a].[Aaa128] <= @__aaa128Max_Value_0
[14:32:56 DBG] Closing data reader to 'ProductionMan' on server '127.0.0.1'.
[14:32:56 DBG] A data reader for 'ProductionMan' on server '127.0.0.1' is being disposed after spending 0ms reading results.
[14:32:56 DBG] Closing connection to database 'ProductionMan' on server '127.0.0.1'.
[14:32:56 DBG] Closed connection to database 'ProductionMan' on server '127.0.0.1' (0ms).
The program '[26203] ProductionMan.Blazor' has exited with code 0 (0x0).

  • Steps to reproduce the issue:

  1. I have created an entity with 135 properties/fields. Add via Suite. Migrate. Confirm. Build.

  2. Run the app with debugger running. do not set any breakpoints of any kind.

  3. Go to the new list page for the new entity. (no filters .. fresh load)

  4. When the page runs and the service is hit we enter the GetListAsync method.

  5. at the ...var totalCount = await _xxxxxxxRepository.GetCountAsync(input.FilterText, input......... 135 more......
    ..... suddenly the IDE enters breakpoint-mode and forces me to click to continue.

no information is percolated up to the debug logs even through i've tried everything to enable more logging.


Critically -- I see that there is an error at passing a variable: WHERE [a].[Aaa128] <= @__aaa128Max_Value_0

Aaa128 is interesting as 128 is an interesting number. As this is a fresh load to the page, there are no filtersl. yet Aaa128 is passing a variable? or is that a bug in the framework? the statement should just read: SELECT COUNT_BIG(*)
FROM [AppCurrentOrderTwos] AS [a] .. with no where clause if there are no variables passed. is the magic number 128 causing issues?

What is or is there a limit of the parameters that can be passed. and how to i increase it?
It is my understanding that the MSSQL parameter limit is 2100.

The reason for this project was due to 256 column limits in Access. Now to hit this is going to kill a very critical project for which i chose this abp.io platform. is this bug platform or ef? the 128 is odd.


  1. Doing a differential test. I reduced the fields to 100. Everything ran great.

SECOND CASE:
7) I INCREASED back up to 127... and i get all new errors.

7.1) First. Repository.GetCountAsync() ran okay and produced the following.
[15:08:23 INF] Executed DbCommand (2ms) [Parameters=[], CommandType='Text', CommandTimeout='30']
SELECT COUNT_BIG(*)
FROM [AppCurrentOrderTwos] AS [a]

This is the expected result.

7.2) But this time (with and OrdinalIndex of 126 in my json file for the crud generator) ... we die at the ....Repository.GetListAsync() call in the service. Before we died on the count when the field count was 135.

And we finally get an Exception returned!

[15:09:18 DBG] Executing DbCommand [Parameters=[@__p_0='?' (DbType = Int32), @__p_1='?' (DbType = Int32)], CommandType='Text', CommandTimeout='30']
SELECT [a].[Id], [a].[Aaa1], [a].[Aaa10], [a].[Aaa100], [a].[Aaa101], [a].[Aaa102], [a].[Aaa103], [a].[Aaa104], [a].[Aaa105], [a].[Aaa106], [a].[Aaa107], [a].[Aaa108], [a].[Aaa109], [a].[Aaa11], [a].[Aaa110], [a].[Aaa111], [a].[Aaa112], [a].[Aaa113], [a].[Aaa114], [a].[Aaa115], [a].[Aaa116], [a].[Aaa117], [a].[Aaa118], [a].[Aaa119], [a].[Aaa12], [a].[Aaa120], [a].[Aaa121], [a].[Aaa122], [a].[Aaa123], [a].[Aaa124], [a].[Aaa125], [a].[Aaa126], [a].[Aaa127], [a].[Aaa13], [a].[Aaa14], [a].[Aaa15], [a].[Aaa16], [a].[Aaa17], [a].[Aaa18], [a].[Aaa19], [a].[Aaa2], [a].[Aaa20], [a].[Aaa21], [a].[Aaa22], [a].[Aaa23], [a].[Aaa24], [a].[Aaa25], [a].[Aaa26], [a].[Aaa27], [a].[Aaa28], [a].[Aaa29], [a].[Aaa3], [a].[Aaa30], [a].[Aaa31], [a].[Aaa32], [a].[Aaa33], [a].[Aaa34], [a].[Aaa35], [a].[Aaa36], [a].[Aaa37], [a].[Aaa38], [a].[Aaa39], [a].[Aaa4], [a].[Aaa40], [a].[Aaa41], [a].[Aaa42], [a].[Aaa43], [a].[Aaa44], [a].[Aaa45], [a].[Aaa46], [a].[Aaa47], [a].[Aaa48], [a].[Aaa49], [a].[Aaa5], [a].[Aaa50], [a].[Aaa51], [a].[Aaa52], [a].[Aaa53], [a].[Aaa54], [a].[Aaa55], [a].[Aaa56], [a].[Aaa57], [a].[Aaa58], [a].[Aaa59], [a].[Aaa6], [a].[Aaa60], [a].[Aaa61], [a].[Aaa62], [a].[Aaa63], [a].[Aaa64], [a].[Aaa65], [a].[Aaa66], [a].[Aaa67], [a].[Aaa68], [a].[Aaa69], [a].[Aaa7], [a].[Aaa70], [a].[Aaa71], [a].[Aaa72], [a].[Aaa73], [a].[Aaa74], [a].[Aaa75], [a].[Aaa76], [a].[Aaa77], [a].[Aaa78], [a].[Aaa79], [a].[Aaa8], [a].[Aaa80], [a].[Aaa81], [a].[Aaa82], [a].[Aaa83], [a].[Aaa84], [a].[Aaa85], [a].[Aaa86], [a].[Aaa87], [a].[Aaa88], [a].[Aaa89], [a].[Aaa9], [a].[Aaa90], [a].[Aaa91], [a].[Aaa92], [a].[Aaa93], [a].[Aaa94], [a].[Aaa95], [a].[Aaa96], [a].[Aaa97], [a].[Aaa98], [a].[Aaa99]
FROM [AppCurrentOrderTwos] AS [a]
ORDER BY [a].[Aaa1]
OFFSET @__p_0 ROWS FETCH NEXT @__p_1 ROWS ONLY
[15:09:18 DBG] Closing connection to database 'ProductionMan' on server '127.0.0.1'.
[15:09:18 DBG] Closed connection to database 'ProductionMan' on server '127.0.0.1' (0ms).
Exception thrown: 'Microsoft.Data.SqlClient.SqlException' in System.Private.CoreLib.dll

[15:09:18 ERR] An exception occurred while iterating over the results of a query for context type 'ProductionMan.EntityFrameworkCore.ProductionManDbContext'.
Microsoft.Data.SqlClient.SqlException (0x80131904): The number of rows provided for a FETCH clause must be greater then zero.
at Microsoft.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action1 wrapCloseInAction) at Microsoft.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action1 wrapCloseInAction)
at Microsoft.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
at Microsoft.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
at Microsoft.Data.SqlClient.SqlDataReader.TryHasMoreRows(Boolean& moreRows)
at Microsoft.Data.SqlClient.SqlDataReader.TryReadInternal(Boolean setTimeout, Boolean& more)
at Microsoft.Data.SqlClient.SqlDataReader.ReadAsyncExecute(Task task, Object state)
at Microsoft.Data.SqlClient.SqlDataReader.InvokeAsyncCall[T](SqlDataReaderBaseAsyncCallContext1 context) --- End of stack trace from previous location --- at Microsoft.EntityFrameworkCore.Query.Internal.BufferedDataReader.BufferedDataRecord.InitializeAsync(DbDataReader reader, IReadOnlyList1 columns, CancellationToken cancellationToken)
2
at Microsoft.EntityFrameworkCore.Query.Internal.BufferedDataReader.InitializeAsync(IReadOnlyList1 columns, CancellationToken cancellationToken) 2 at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteReaderAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken) at Microsoft.EntityFrameworkCore.Query.Internal.SplitQueryingEnumerable1.AsyncEnumerator.InitializeReaderAsync(AsyncEnumerator enumerator, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.SqlServer.Storage.Internal.SqlServerExecutionStrategy.ExecuteAsync[TState,TResult](TState state, Func4 operation, Func4 verifySucceeded, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Query.Internal.SplitQueryingEnumerable1.AsyncEnumerator.MoveNextAsync() ClientConnectionId:601f5230-7e14-41e3-ac18-dee4ce8acce3 Error Number:10744,State:1,Class:15 Microsoft.Data.SqlClient.SqlException (0x80131904): The number of rows provided for a FETCH clause must be greater then zero. at Microsoft.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action1 wrapCloseInAction)
at Microsoft.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action1 wrapCloseInAction) at Microsoft.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) at Microsoft.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady) at Microsoft.Data.SqlClient.SqlDataReader.TryHasMoreRows(Boolean& moreRows) at Microsoft.Data.SqlClient.SqlDataReader.TryReadInternal(Boolean setTimeout, Boolean& more) at Microsoft.Data.SqlClient.SqlDataReader.ReadAsyncExecute(Task task, Object state) at Microsoft.Data.SqlClient.SqlDataReader.InvokeAsyncCall[T](SqlDataReaderBaseAsyncCallContext1 context)
--- End of stack trace from previous location ---
at Microsoft.EntityFrameworkCore.Query.Internal.BufferedDataReader.BufferedDataRecord.InitializeAsync(DbDataReader reader, IReadOnlyList1 columns, CancellationToken cancellationToken) 2 at Microsoft.EntityFrameworkCore.Query.Internal.BufferedDataReader.InitializeAsync(IReadOnlyList1 columns, CancellationToken cancellationToken)
2
at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteReaderAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Query.Internal.SplitQueryingEnumerable1.AsyncEnumerator.InitializeReaderAsync(AsyncEnumerator enumerator, CancellationToken cancellationToken) at Microsoft.EntityFrameworkCore.SqlServer.Storage.Internal.SqlServerExecutionStrategy.ExecuteAsync[TState,TResult](TState state, Func4 operation, Func4 verifySucceeded, CancellationToken cancellationToken) at Microsoft.EntityFrameworkCore.Query.Internal.SplitQueryingEnumerable1.AsyncEnumerator.MoveNextAsync()
2
at Microsoft.EntityFrameworkCore.EntityFrameworkQueryableExtensions.ToListAsync[TSource](IQueryable`1 source, CancellationToken cancellationToken)
ClientConnectionId:601f5230-7e14-41e3-ac18-dee4ce8acce3

Error Number:10744,State:1,Class:15
Exception thrown: 'Microsoft.Data.SqlClient.SqlException' in System.Private.CoreLib.dll
[15:09:19 ERR] ---------- RemoteServiceErrorInfo ----------
{
"code": null,
"message": "An internal error occurred during your request!",
"details": null,
"data": null,
"validationErrors": null
}

15:09:19 ERR] The number of rows provided for a FETCH clause must be greater then zero.
Microsoft.Data.SqlClient.SqlException (0x80131904): The number of rows provided for a FETCH clause must be greater then zero.
at Microsoft.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action1 wrapCloseInAction) at Microsoft.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action1 wrapCloseInAction)
at Microsoft.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
at Microsoft.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
at Microsoft.Data.SqlClient.SqlDataReader.TryHasMoreRows(Boolean& moreRows)
at Microsoft.Data.SqlClient.SqlDataReader.TryReadInternal(Boolean setTimeout, Boolean& more)
at Microsoft.Data.SqlClient.SqlDataReader.ReadAsyncExecute(Task task, Object state)
at Microsoft.Data.SqlClient.SqlDataReader.InvokeAsyncCall[T](SqlDataReaderBaseAsyncCallContext`1 context)

2
at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteReaderAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Query.Internal.SplitQueryingEnumerable1.AsyncEnumerator.InitializeReaderAsync(AsyncEnumerator enumerator, CancellationToken cancellationToken) at Microsoft.EntityFrameworkCore.SqlServer.Storage.Internal.SqlServerExecutionStrategy.ExecuteAsync[TState,TResult](TState state, Func4 operation, Func4 verifySucceeded, CancellationToken cancellationToken) at Microsoft.EntityFrameworkCore.Query.Internal.SplitQueryingEnumerable1.AsyncEnumerator.MoveNextAsync()
2
at Microsoft.EntityFrameworkCore.EntityFrameworkQueryableExtensions.ToListAsync[TSource](IQueryable1 source, CancellationToken cancellationToken) at ProductionMan.CurrentOrderTwosNs.EfCoreCurrentOrderTwoRepositoryBase.GetListAsync(String filterText, String aaa1, Nullable1 aaa2Min, Nullable1 aaa2Max, Nullable1 aaa3Min, Nullable1 aaa3Max, Nullable1 aaa4Min, Nullable1 aaa4Max, Nullable1 aaa5Min, Nullable1 aaa5Max, Nullable1 aaa6Min, Nullable1 aaa6Max, Nullable1 aaa7Min, Nullable1 aaa7Max, Nullable1 aaa8Min, Nullable1 aaa8Max, Nullable1 aaa9Min, Nullable1 aaa9Max, Nullable1 aaa10Min, Nullable1 aaa10Max, Nullable1 aaa11Min, Nullable1 aaa11Max, Nullable1 aaa12Min, Nullable1 aaa12Max, Nullable1 aaa13Min, Nullable1 aaa13Max, Nullable1 aaa14Min, Nullable1 aaa14Max, Nullable1 aaa15Min, Nullable1 aaa15Max, Nullable1 aaa16Min, Nullable1 aaa16Max, Nullable1 aaa17Min, Nullable1 aaa17Max, Nullable1 aaa18Min, Nullable1 aaa18Max, Nullable1 aaa19Min, Nullable1 aaa19Max, Nullable1 aaa20Min, Nullable1 aaa20Max, Nullable1 aaa21Min, Nullable1 aaa21Max, Nullable1 aaa22Min, Nullable1 aaa22Max, Nullable1 aaa23Min, Nullable1 aaa23Max, Nullable1 aaa24Min, Nullable1 aaa24Max, Nullable1 aaa25Min, Nullable1 aaa25Max, Nullable1 aaa26Min, Nullable1 aaa26Max, Nullable1 aaa27Min, Nullable1 aaa27Max, Nullable1 aaa28Min, Nullable1 aaa28Max, Nullable1 aaa29Min, Nullable1 aaa29Max, Nullable1 aaa30Min, Nullable1 aaa30Max, Nullable1 aaa31Min, Nullable1 aaa31Max, Nullable1 aaa32Min, Nullable1 aaa32Max, Nullable1 aaa33Min, Nullable1 aaa33Max, Nullable1 aaa34Min, Nullable1 aaa34Max, Nullable1 aaa35Min, Nullable1 aaa35Max, Nullable1 aaa36Min, Nullable1 aaa36Max, Nullable1 aaa37Min, Nullable1 aaa37Max, Nullable1 aaa38Min, Nullable1 aaa38Max, Nullable1 aaa39Min, Nullable1 aaa39Max, Nullable1 aaa40Min, Nullable1 aaa40Max, Nullable1 aaa41Min, Nullable1 aaa41Max, Nullable1 aaa42Min, Nullable1 aaa42Max, Nullable1 aaa43Min, Nullable1 aaa43Max, Nullable1 aaa44Min, Nullable1 aaa44Max, Nullable1 aaa45Min, Nullable1 aaa45Max, Nullable1 aaa46Min, Nullable1 aaa46Max, Nullable1 aaa47Min, Nullable1 aaa47Max, Nullable1 aaa48Min, Nullable1 aaa48Max, Nullable1

.......


18 Answer(s)
  • User Avatar
    0
    MartinEhv created

    hereby also found when stepping through the foreced-breakpoints:

    items [List] = Error processing 'variables' request. The operation was canceled.Screenshot 2025-02-21 at 18.34.37.png

  • User Avatar
    0
    MartinEhv created

    I have also now verified this against SQL EDGE (original) and SQL Server (WINDOWS) .

    Same behavior.

  • User Avatar
    0
    berkansasmaz created
    Support Team .NET Developer

    Hi,

    Can you add the [DisableAuditing] attribute to the related entity? I think this restriction comes from the AuditLogging module.

    https://abp.io/docs/latest/framework/infrastructure/audit-logging#enable-disable-for-entities-properties

  • User Avatar
    0
    MartinEhv created

    Hi, thanks for the suggestion.

    Sadly no change, added the decorator to the entity class and/or the base, both.

    [DisableAuditing]
    public abstract class CurrentOrderBase : Entity<string>
    

    The error is in the query itself for sure
    .

    SELECT COUNT_BIG(*)
    FROM [app_prodman].[CurrentOrders] AS [c]
    WHERE [c].[T21_G_AFMONTSP] <= @__t21_G_AFMONTSPMax_Value_0<<<====== should not be here!

    There should NOT be a WHERE clause. I think above 128 filter objects being passed the filterarray in the framework is being dirtied somehow and injecting this filter comparison that just shouldn't even be in the Count nor Select logic, then crashes out completely. Remind this is the initial load on the page and as evidenced above when the filter count is below 100 or 120 it works, when above, weird things start happening.

  • User Avatar
    0
    berkansasmaz created
    Support Team .NET Developer

    I tried to reproduce the problem but I was not successful. To reproduce I used ICrudAppService and included 130 conditions in query.

    Screenshot 2025-02-24 at 17.41.44.png

    Screenshot 2025-02-24 at 17.44.28.png


    How do you execute this query? Do you have a custom repository method or do you use generic repository method?

  • User Avatar
    0
    MartinEhv created

    All boilerplate code gen from ABP Suite. Literally -- generate, compile, (migrate), run. Nothing particularly special. Which is why i went down the path of confirming the SQL server installation was not in the way and tried another.

    I'm executing the query from the app, or from a direct Api URL ( for quick testing) ..

    Is the continuous 'invisible' breakpoints a clue? How can we get some additional debug from the depths? I've messed with the settings in Blazor/program.cs which is how i got the addition sql debug from eFCore. Any other suggestions?

  • User Avatar
    0
    MartinEhv created

    a few days ago i did a simple test like yours as well with column names AA1, - AA130.. just to rule-out weird column names or anyting, as well.

  • User Avatar
    0
    berkansasmaz created
    Support Team .NET Developer

    Interesting situation, thank you for the information. I will try with Suite soon.

  • User Avatar
    0
    berkansasmaz created
    Support Team .NET Developer

    Hi,

    Can you send me the .suite folder in the solution so that I can reproduce the problem more easily?

    Screenshot 2025-02-25 at 13.25.29.png

  • User Avatar
    0
    MartinEhv created

    test3.png
    Note the signature of all filters being passed...

    As for the JSON from Suite:
    All properties/fields 1-131 have isFilterable = true
    Just a simple Entity ( which is why audit logging confused me but could of still be possibility )

    I've run this in my current large project as well as a new standalone 'host' app created from Studio
    Here is a basic Json i use in test... first 3 fields so you can see the basics without the whole code(i can't seem to attach the whole thing here)

    {
    "Id": "5a972b55-3bb5-4847-bd62-8d7b8cd49c74",
    "Name": "TestThree",
    "OriginalName": "TestThree",
    "NamePlural": "TestThrees",
    "DatabaseTableName": "TestThree",
    "Namespace": "TestThreeNs",
    "Type": 1,
    "MasterEntityName": null,
    "MasterEntity": null,
    "BaseClass": "Entity",
    "PageTitle": "Test Three",
    "MenuIcon": "file-alt",
    "PrimaryKeyType": "Guid",
    "PreserveCustomCode": true,
    "IsMultiTenant": false,
    "CheckConcurrency": false,
    "BulkDeleteEnabled": false,
    "ShouldCreateUserInterface": true,
    "ShouldCreateBackend": true,
    "ShouldExportExcel": false,
    "ShouldAddMigration": true,
    "ShouldUpdateDatabase": true,
    "CreateTests": false,
    "Properties": [
    {
    "Id": "b94be8aa-77fd-452a-a068-c81c06b99883",
    "Name": "Aaa1",
    "Type": "string",
    "EnumType": null,
    "EnumNamespace": null,
    "EnumAngularImport": null,
    "EnumFilePath": null,
    "DefaultValue": null,
    "IsNullable": false,
    "IsRequired": true,
    "IsFilterable": true,
    "AllowEmptyStrings": false,
    "IsTextArea": false,
    "MinLength": null,
    "MaxLength": 50,
    "SortOrder": 0,
    "SortType": 0,
    "Regex": null,
    "EmailValidation": false,
    "ShowOnList": true,
    "ShowOnCreateModal": true,
    "ShowOnEditModal": true,
    "ReadonlyOnEditModal": false,
    "EnumValues": null,
    "IsSelected": true,
    "MaxFileSize": null,
    "OrdinalIndex": 0
    },
    {
    "Id": "e84ed642-0c97-46db-a4ef-731cf500195d",
    "Name": "Aaa2",
    "Type": "int",
    "EnumType": null,
    "EnumNamespace": null,
    "EnumAngularImport": null,
    "EnumFilePath": null,
    "DefaultValue": null,
    "IsNullable": false,
    "IsRequired": true,
    "IsFilterable": true,
    "AllowEmptyStrings": false,
    "IsTextArea": false,
    "MinLength": null,
    "MaxLength": null,
    "SortOrder": 0,
    "SortType": 0,
    "Regex": null,
    "EmailValidation": false,
    "ShowOnList": true,
    "ShowOnCreateModal": true,
    "ShowOnEditModal": true,
    "ReadonlyOnEditModal": false,
    "EnumValues": null,
    "IsSelected": true,
    "MaxFileSize": null,
    "OrdinalIndex": 1
    },
    {
    "Id": "f7b3a928-ad23-4ecd-ac6b-d32bdd29795e",
    "Name": "Aaa3",
    "Type": "int",
    "EnumType": null,
    "EnumNamespace": null,
    "EnumAngularImport": null,
    "EnumFilePath": null,
    "DefaultValue": null,
    "IsNullable": true,
    "IsRequired": false,
    "IsFilterable": true,
    "AllowEmptyStrings": false,
    "IsTextArea": false,
    "MinLength": null,
    "MaxLength": null,
    "SortOrder": 0,
    "SortType": 0,
    "Regex": null,
    "EmailValidation": false,
    "ShowOnList": true,
    "ShowOnCreateModal": true,
    "ShowOnEditModal": true,
    "ReadonlyOnEditModal": false,
    "EnumValues": null,
    "IsSelected": true,
    "MaxFileSize": null,
    "OrdinalIndex": 2
    }... repeat to 130+ fields

    ..continue. Aaa4-131 as type:int, same type
    with that:
    "IsNullable": true, (i have tried combinations of this as well)
    "IsRequired": false,
    "IsFilterable": true,

    I can send the whole file to email or something... but it's this basic.

  • User Avatar
    0
    berkansasmaz created
    Support Team .NET Developer

    Hi,

    Can you zip the whole folder and send it to berkan.sasmaz@volosoft.com?

  • User Avatar
    0
    MartinEhv created

    Sent in test scaffolding project (not the actual project) showing the same issue.

    Note: OSX, Apple M1

  • User Avatar
    0
    berkansasmaz created
    Support Team .NET Developer

    First of all, thank you for submitting your project. I am also using macOS M1 and I was able to reproduce the problem. Interestingly, I found that the application crashes when the GetListAsync repository method is called. According to my findings, I think that the problem is not in the query but in having too many parameters when calling the method. I would like you to do a few experiments to make sure that you have the same problem.

    Comment out the GetListAsync method in AppService as below and see if there is a problem:

    Screenshot 2025-02-27 at 14.12.12.png

    If there is no problem, remove the method from the comment line and update the content of the GetListAsync repository method as below and run it again. You will see that the problem has started to occur again.

    Screenshot 2025-02-27 at 14.14.01.png

    If all this is happening in your case, it indicates that the problem is not in the query, but in calling the method.

    Probably more than 200 parameters are not supported by the dotnet runtime, but I am not sure. We can investigate in detail after you verify them.

  • User Avatar
    0
    MartinEhv created

    Well yes. thats the point. i've ran many experiments already proving that it's the parameter limit. i've done this both manually and with constructing of the parameters via the Suite. So . no need for me to recreate - i've already done that test, at infinitum, before i submitted.

    As stated, if you look closely at the GetCountAsync error.. when no filter is passed there is .. oddly, a filter being passed; with a iterator of 128. I suspect that either ABP, or something lower can not handle more than 128 variables. But as .mssql can(2000 parameters), Thus, I suspect ABP.

    How can we definitively debug ABP. it should not be inserting the following whatsoever:

    **WHERE [a].[Aaa128] <= @__aaa128Max_Value_0**
    

    On a first-page load. This should not be there; and it's not if you have less than 127 fields.

  • User Avatar
    0
    MartinEhv created

    Oh.. btw. .i'm continuing to onboard my entities. I have about 7 that have over 150 fields. and 2 with 256 fields. For now i'm just onboarding them without any filters enabled in the default constructors, nor then, thus, the default List pages built by CRUD, which is NOT the intent. But to get moving , thats what I'm doing until this detail is resolved.

  • User Avatar
    0
    berkansasmaz created
    Support Team .NET Developer

    Hi,

    Yes, I was able to reproduce the problem, I have opened an internal issue to investigate it in more detail. It seems to take a long time to determine the problem, but we will inform you as soon as we determine it. Thank you for your patience.

  • User Avatar
    0
    MartinEhv created

    Reproduction is 1/2 way there ;-). Note the screencaps of the "variable" missing during the forced debug. I think there is a hash/array that went out of bounds and everything breaks. Probably i went past original-designed upper bounds of "normal app use" and moved us in to edge/extreme. "128 fields, yeah! thats enough!". Nope.

    This is a manufacturing floor Line-of-business app. The dashboard will-have literally 300 fields once pivoted.

  • User Avatar
    0
    berkansasmaz created
    Support Team .NET Developer

    Reproduction is 1/2 way there ;-). Note the screencaps of the "variable" missing during the forced debug. I think there is a hash/array that went out of bounds and everything breaks. Probably i went past original-designed upper bounds of "normal app use" and moved us in to edge/extreme. "128 fields, yeah! thats enough!". Nope.

    This is a manufacturing floor Line-of-business app. The dashboard will-have literally 300 fields once pivoted.

    Yes, I have been working as an ABP maintainer for 5 years, but this is the first time I have come across such a case. But we like edge cases :)


    We will examine your problem and try to return as soon as possible. Thank you for your patience.

Boost Your Development
ABP Live Training
Packages
See Trainings
Mastering ABP Framework Book
Do you need assistance from an ABP expert?
Schedule a Meeting
Mastering ABP Framework Book
The Official Guide
Mastering
ABP Framework
Learn More
Mastering ABP Framework Book
Made with ❤️ on ABP v9.2.0-preview. Updated on March 13, 2025, 04:08