Starts in:
2 DAYS
9 HRS
44 MIN
1 SEC
Starts in:
2 D
9 H
44 M
1 S

Activities of "enes.koroglu"

  • ABP Framework version: v5.3.3
  • UI Type: Angular
  • Database System: EF Core (PostgreSQL)
  • Tiered (for MVC) or Auth Server Separated (for Angular): no

I have two FullAuditedAggregateRoot entity (Gowih and Company) and MultiTenant and MultiProject (our custom filter). When i join them query is generated as Query 1. I would expect Company to be joined directly like marketPlace without parentesis. MarktePlace is AuditedAggregateRoot entity. As i see dataFilter adds where condition in a parenthesis then join it with prior tables, not adding where condition on the last where clause. Query 2 is which i want the query to be like. Query 1 causes miss index usage or wrong index usage, so causes performance problems.

Query 1:

SELECT
  a."Id",  a."AccountId",  a."AvailabilityStateId",  a."ConcurrencyStamp",  a."CreationTime",  a."CreatorId",  a."DeleterId",  a."DeletionTime",  a."ExtraProperties",  a."LastModificationTime",  a."LastModifierId",  t."Id",
  t."Address",  t."CitizenshipId",  t."City",  t."ConcurrencyStamp",  t."ContactName",  t."CreationTime",  t."CreatorId",  t."DeleterId",  t."DeletionTime",  t."ExtraProperties",  t."IsDeleted",  t."LastModificationTime",  t."LastModifierId"
FROM
  public."AppGowihs" AS a
LEFT JOIN
  public."AppMarketPlaces" AS a0
ON
  a."MarketPlaceId" = a0."Id"
LEFT JOIN 
(
  SELECT
    a1."Id",    a1."Address",    a1."CitizenshipId",    a1."City",    a1."ConcurrencyStamp",    a1."ContactName",    a1."CreationTime",    a1."CreatorId",    a1."DeleterId",    a1."DeletionTime",    a1."ExtraProperties",    a1."IsDeleted",    a1."LastModificationTime",    a1."LastModifierId"
  FROM
    "AppCompanies" AS a1
  WHERE
    (a1."Type" = $14)
    AND ((($1
          OR NOT (a1."IsDeleted"))
        AND ($2
          OR (a1."TenantId" = $3)))
      AND ($4
        OR (a1."ProjectId" = $5))) 
) AS t ON a."InvoceToId" = t."Id"
WHERE
  ((($6
        OR NOT (a."IsDeleted"))
      AND ($7
        OR (a."TenantId" = $8)))
    AND ($9
      OR (a."ProjectId" = $10)))
  AND (((($11 = $16)
        OR ((a."Id" LIKE $11 || $17 ESCAPE $18)
          AND (LEFT(a."Id", LENGTH($11))::character varying(15) = $11::character varying(15))))
      OR (($11 = $19)
        OR ((a."OrderNo" LIKE $11 || $20 ESCAPE $21)
          AND (LEFT(a."OrderNo", LENGTH($11))::character varying(40) = $11::character varying(40)))))
    OR (($11 = $22)
      OR (((a."MarketPlaceOrderNo" IS NOT NULL))
        AND ((a."MarketPlaceOrderNo" LIKE $11 || $23 ESCAPE $24)
          AND (LEFT(a."MarketPlaceOrderNo", LENGTH($11))::character varying(60) = $11::character varying(60))))))
ORDER BY
  a."CreationTime" DESC,
  a."Id",
  t."Id"
LIMIT
  $12
OFFSET
  $13

Query 2:

SELECT
  a."Id",  a."AccountId",  a."AvailabilityStateId",  a."ConcurrencyStamp",  a."CreationTime",  a."CreatorId",  a."DeleterId",  a."DeletionTime",  a."ExtraProperties",  a."LastModificationTime",  a."LastModifierId",  t."Id",
  t."Address",  t."CitizenshipId",  t."City",  t."ConcurrencyStamp",  t."ContactName",  t."CreationTime",  t."CreatorId",  t."DeleterId",  t."DeletionTime",  t."ExtraProperties",  t."IsDeleted",  t."LastModificationTime",  t."LastModifierId"
FROM
  public."AppGowihs" AS a
LEFT JOIN
  public."AppMarketPlaces" AS a0
ON
  a."MarketPlaceId" = a0."Id"
LEFT JOIN 
    "AppCompanies" AS t ON a."InvoceToId" = t."Id"
WHERE
  ((($6
        OR NOT (a."IsDeleted"))
      AND ($7
        OR (a."TenantId" = $8)))
    AND ($9
      OR (a."ProjectId" = $10)))
  AND (((($11 = $16)
        OR ((a."Id" LIKE $11 || $17 ESCAPE $18)
          AND (LEFT(a."Id", LENGTH($11))::character varying(15) = $11::character varying(15))))
      OR (($11 = $19)
        OR ((a."OrderNo" LIKE $11 || $20 ESCAPE $21)
          AND (LEFT(a."OrderNo", LENGTH($11))::character varying(40) = $11::character varying(40)))))
    OR (($11 = $22)
      OR (((a."MarketPlaceOrderNo" IS NOT NULL))
        AND ((a."MarketPlaceOrderNo" LIKE $11 || $23 ESCAPE $24)
          AND (LEFT(a."MarketPlaceOrderNo", LENGTH($11))::character varying(60) = $11::character varying(60))))))
    AND (t."Type" = $14)
    AND ((($1
          OR NOT (t."IsDeleted"))
        AND ($2
          OR (t."TenantId" = $3)))
      AND ($4
        OR (t."ProjectId" = $5))) 
ORDER BY
  a."CreationTime" DESC,
  a."Id",
  t."Id"
LIMIT
  $12
OFFSET
  $13
  • ABP Framework version: v5.2.1
  • UI type: Angular
  • DB provider: EF Core
  • Tiered (MVC) or Identity Server Separated (Angular): no

We have below query in logfile but i want to see parameters' details. I tried adding .EnableSensitiveDataLogging(); at then end of var builder = new DbContextOptionsBuilder<FFEDbContext>().UseNpgsql(configuration.GetConnectionString("Default")).EnableSensitiveDataLogging(); command in ContextFactory class' CreateDbContext method. Also tried maliming's suggestion on github like below in FFEEntityFrameworkCoreModule class' ConfigureServices method, sequentially commented 2 lines and the line which is commented out as 3rd option. But nothing changed in logs. How can i see parameter values in logs?

        Configure<AbpDbContextOptions>(options =>
        {
            options.Configure(context =>
            {
                //context.DbContextOptions.UseLoggerFactory(new LoggerFactory(new[] { new ConsoleLoggerProvider((_, __) => true, true) }));
                //context.DbContextOptions.UseLoggerFactory(context.ServiceProvider.GetService<ILoggerFactory>());
                context.DbContextOptions.UseLoggerFactory(LoggerFactory.Create(builder => { builder.AddConsole(); }));
		context.DbContextOptions.EnableDetailedErrors();
                context.DbContextOptions.EnableSensitiveDataLogging();
            });
            options.UseNpgsql();
        });

Log content:

Executed DbCommand (7,080ms) [Parameters=[@__ef_filter__p_5='?' (DbType = Boolean), @__ef_filter__p_6='?' (DbType = Boolean), @__ef_filter__CurrentTenantId_7='?' (DbType = Guid), @__ef_filter__p_8='?' (DbType = Boolean), @__ef_filter__CurrentProjectId_9='?' (DbType = Int32), @__ef_filter__p_0='?' (DbType = Boolean), @__ef_filter__p_1='?' (DbType = Boolean), @__ef_filter__CurrentTenantId_2='?' (DbType = Guid), @__ef_filter__p_3='?' (DbType = Boolean), @__ef_filter__CurrentProjectId_4='?' (DbType = Int32), @__ToLower_0='?', @__filterText_1='?', @__NormalizeFFE_2='?', @__p_4='?' (DbType = Int32), @__p_3='?' (DbType = Int32)], CommandType='"Text"', CommandTimeout='30']
SELECT a."Id", a0."Id" AS "Id0", t."Id" AS "Id1", t0."Id" AS "Id2", a."CreationTime"
FROM public."AppGowihs" AS a
LEFT JOIN public."AppMarketPlaces" AS a0 ON a."MarketPlaceId" = a0."Id"
LEFT JOIN (
	SELECT a1."Id", a1."Name"
	FROM "AppCompanies" AS a1
	WHERE (a1."Type" = 6) AND (((@__ef_filter__p_5 OR NOT (a1."IsDeleted")) AND (@__ef_filter__p_6 OR (a1."TenantId" = @__ef_filter__CurrentTenantId_7))) AND (@__ef_filter__p_8 OR (a1."ProjectId" = @__ef_filter__CurrentProjectId_9)))
) AS t ON a."InvoceToId" = t."Id"
INNER JOIN (
	SELECT a2."Id", a2."NameNormalized"
	FROM "AppCompanies" AS a2
	WHERE (a2."Type" = 4) AND (((@__ef_filter__p_5 OR NOT (a2."IsDeleted")) AND (@__ef_filter__p_6 OR (a2."TenantId" = @__ef_filter__CurrentTenantId_7))) AND (@__ef_filter__p_8 OR (a2."ProjectId" = @__ef_filter__CurrentProjectId_9)))
) AS t0 ON a."ShipToId" = t0."Id"
WHERE (((@__ef_filter__p_0 OR NOT (a."IsDeleted")) AND (@__ef_filter__p_1 OR (a."TenantId" = @__ef_filter__CurrentTenantId_2))) AND (@__ef_filter__p_3 OR (a."ProjectId" = @__ef_filter__CurrentProjectId_4))) AND (((((((@__ToLower_0 = '') OR (strpos(lower(a."Id"), @__ToLower_0) > 0)) OR ((@__filterText_1 = '') OR (strpos(a."OrderNo", @__filterText_1) > 0))) OR ((@__ToLower_0 = '') OR (strpos(lower(a."MarketPlaceOrderNo"), @__ToLower_0) > 0))) OR ((@__ToLower_0 = '') OR (strpos(lower(a0."Name"), @__ToLower_0) > 0))) OR ((@__NormalizeFFE_2 = '') OR (strpos(t0."NameNormalized", @__NormalizeFFE_2) > 0))) OR ((@__ToLower_0 = '') OR (strpos(lower(t."Name"), @__ToLower_0) > 0)))
ORDER BY a."CreationTime" DESC
LIMIT @__p_4 OFFSET @__p_3
  • ABP Framework version: v5.3.3
  • UI type: Angular
  • DB provider: EF Core
  • Tiered (MVC) or Identity Server Separated (Angular): no
  • Exception message and stack trace:
  • Steps to reproduce the issue:"

We are creating a support account, under every tenant and we are linking these accounts each other. Now we have aproximately 50 tenant and when we open Linked Accounts modal, it takes 30 seconds. This is really slow, if the number exceeds user gets timeout (so we removed some records to be able to open Linkend Accounts screen). I realised this endpoints gets whole records, not only selected page's records and also 50 records is not too much to take 30 seconds. I think there is a problem.

Check the docs before asking a question: https://docs.abp.io/en/commercial/latest/ Check the samples, to see the basic tasks: https://docs.abp.io/en/commercial/latest/samples/index The exact solution to your question may have been answered before, please use the search on the homepage.

If you're creating a bug/problem report, please include followings:

  • ABP Framework version: v5.3.3
  • UI type: Angular
  • DB provider: EF Core
  • Tiered (MVC) or Identity Server Separated (Angular): no
  • Steps to reproduce the issue:"

I have some entities like below:

public class Order :AggregateRoot<Guid>
{
    public string Name { get; set; }
    public string Address { get; set; }
    public ICollection<OrderLine> Lines { get; set; }
}
public class OrderLine:Entity<Guid>
{
    public Guid ProductId { get; set; }
    public Guid OrderId { get; set; }
    public int Quantity { get; set; }
    public Product Product { get;}
}
public class Product:AggregateRoot<Guid>
{
    public string Name { get; set; }
    public string Description { get; set; }
}

public class EfCoreOrderRepository : EfCoreRepository<CommonDbContext, Order, Guid>, IOrderRepository
{
    public async Task<Order> GetWithNavigationPropertiesAsync(Guid id)
    {
        var query = from order in (await GetDbSetAsync()).Include(p => p.Lines).ThenInclude(s => s.Product)
                    where order.Id == id
                    select order;
        return await query.SingleAsync();
    }
}

I've added Product as a navigation property to OrderLine entity. But as we see in docs there is a section which says:

Do always reference to other aggregate roots by Id. Never add navigation properties to other aggregate roots.

  1. What is the main reason of this suggestion, could you please give more detail?
  2. If our way is wrong, how should we get Order/Lines and Product details on GetWithNavigationPropertiesAsync method.
  • ABP Framework version: v5.3.3
  • UI type: Angular
  • DB provider: EF Core
  • Tiered (MVC) or Identity Server Separated (Angular): no
  • Steps to reproduce the issue:"
    • Create a role named as role-supervisor.
    • Give below grants (Picture 1) to role-supervisor.
    • Assign role-supervisor to a user (supervisor).

-Picture 1-

This user can grant admin role to any user, or revoke admin role from any user as you can see in Picture 2. I want to create a role which can create/edit/lock/unlock user, assign/deassign roles to/from user. But i do not want the owner of this role to assign/deassign admin (or marked as special or private other roles) some other roles from/to users. There may be a solution like a new property for role as private. Define a new permission under Identity Management permission section for grant/revoke private role. Should be a new permission for grant/rekove private roles to any user. And owner of role-supervisor should not act on some private/special users.

-Picture 2-

  • ABP Framework version: v5.3.3
  • UI type: Angular
  • DB provider: EF Core
  • Tiered (MVC) or Identity Server Separated (Angular): no
  • Exception message and stack trace:

We create appService methods with [UnitOfWork(true)] attribute. Call our business related codes/methods and then make await CurrentUnitOfWork.SaveChangesAsync(); Then call one or more background job creation calls and when exit from appService methods ABP calls CompleteAsnyc method. In this stiuation if any error occurs (like below), background jobs are created and our operations are (on business related tables) rollbacked. How can we make background job work in the same transaction with our business code; so it will not created or rolledback when we get any error on method completion (CompleAsync)

[ERR] The operation was canceled.
System.OperationCanceledException: The operation was canceled.
   at System.Threading.CancellationToken.ThrowOperationCanceledException()
   at Npgsql.Internal.NpgsqlConnector.<StartUserAction>g__DoStartUserAction|257_0(<>c__DisplayClass257_0& )
   at Npgsql.Internal.NpgsqlConnector.StartUserAction(ConnectorState newState, NpgsqlCommand command, CancellationToken cancellationToken, Boolean attemptPgCancellation)
   at Npgsql.NpgsqlTransaction.Commit(Boolean async, CancellationToken cancellationToken)
   at Microsoft.EntityFrameworkCore.Storage.RelationalTransaction.CommitAsync(CancellationToken cancellationToken)
   at Microsoft.EntityFrameworkCore.Storage.RelationalTransaction.CommitAsync(CancellationToken cancellationToken)
   at Volo.Abp.Uow.EntityFrameworkCore.EfCoreTransactionApi.CommitAsync()
   at Volo.Abp.Uow.UnitOfWork.CommitTransactionsAsync()
   at Volo.Abp.Uow.UnitOfWork.CompleteAsync(CancellationToken cancellationToken)
   at Volo.Abp.AspNetCore.Mvc.Uow.AbpUowActionFilter.OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeNextActionFilterAsync>g__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeInnerFilterAsync>g__Awaited|13_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextExceptionFilterAsync>g__Awaited|26_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)

  • Steps to reproduce the issue:"
[UnitOfWork(true)]
        public async Task CreateAsync()
        {
            await productRepository.InsertAsync(new Product("Product1"));
            await CurrentUnitOfWork.SaveChangesAsync();
            await backgroundJobManager.EnqueueAsync(ProductJobArgs);
        }
  • ABP Framework version: v5.2.1
  • UI type: Angular
  • DB provider: EF Core
  • Tiered (MVC) or Identity Server Separated (Angular): no

We use Distributed Event Bus via RabbitMQ to share data between two services which is also ABP project (v.4.4.4). v5.2.1 is publisher and v4.4.4 is subscriber.

We start v4.4.4 Project to create exchange and queues and to be sure we stop the project. Then we create messages from 5.2.1 project and then queues and exchange created on rabbitmq. We do this on test and dev environment. Sometimes we create a message on test go to project2test as we expect, sometimes go to project2dev and sometimes message does not appear anywhere. We tried true and false for useOutbox parameter and enabled outbox but nothing changed. We do not see any records on AbpEventOutbox on v5.2.1 publisher project.

RabbitMQ Generated Queues for environments and projects | Exchange | Queue | Environment | | --- | --- | --- | | project1testexch | project1test | test | | project1testexch | project2test | test | | project1devexch | project1dev | development | | project1devexch | project2dev | development |

AppSettings | project | environment | clientname | exchangename | | --- | --- | --- | --- | | project1 | test | project1test | project1testexch | | project2 | test | project2test | project1testexch | | project1 | dev | project1dev | project1devexch | | project2 | dev | project2dev | project1devexch |

  • ABP Framework version: v5.2.1
  • UI type: Angular
  • DB provider: EF Core
  • Tiered (MVC) or Identity Server Separated (Angular): no
  • Steps to reproduce the issue:"

Register screen shows password rules on validation. Although Language selected Turkish, Password should include a number, a capital, and a special character. message is still English. In password reset page, password rule does not shown like registration screen. Only Submit button being disabled, but user cannot understand validation rule.

  • ABP Framework version: v4.3.3
  • UI type: Angular
  • DB provider: EF Core
  • Tiered (MVC) or Identity Server Separated (Angular): no

We need Entity Max and Min Length constants which we define in Domain.Shared\***Consts.cs files on Angular to be generated via generate-proxy. For now we should change same info both aspnet-core and angular projects every time when we make a change. Is there a way to generate this constants on Angular side via generate-proxy?

  • ABP Framework version: v4.3.3
  • UI type: Angular
  • DB provider: EF Core
  • Tiered (MVC) or Identity Server Separated (Angular): no

I see there is a related issue about this problem. Although I set RedirectAllowedUrls and tried with a new created project, click on LOGO in login page redirects to API. Below screen shot is belongs to new created test project. My web site logo also redirects to https://test-app.mydomain.com/ address. How can i redirect logo to my frontend (https://test-services.mydomain.com)

"App": { "SelfUrl": "https://test-app.mydomain.com", "AngularUrl": "https://test-services.mydomain.com", "CorsOrigins": "http://localhost:4200,https://.ekol.com,https://.mydomain.com", "RedirectAllowedUrls": "https://test-services.mydomain.com" }

Showing 1 to 10 of 12 entries
Made with ❤️ on ABP v9.1.0-preview. Updated on November 20, 2024, 13:06