Activities of "BeytullahBB"

hello, 3 different uses were actually because we couldn't use that. As can be seen in the image below, the parameters expected by the begin method in version 9.0.2 do not match the ones in the image. https://prnt.sc/3ADJBxdAvvWY https://prnt.sc/3ADJBxdAvvWY

I encountered the following issues during the modifications made in the CreateInputOutputTypeAsync method:

  1. Transaction Management Issue:

    • When an error occurs during the repository.create operation in CreateInputOutputTypeAsync method
    • The system fails to perform the rollback operation
    • As a result, data continues to be saved to the database even in error scenarios https://prnt.sc/scsx8SSwwZCC
  2. Usage Scenario Incompatibility:

    • The proposed method is no longer working compatibly with our current usage scenarios
    • This causes the method to malfunction across three different usage scenarios https://prnt.sc/Bl5txLcWPuE1

I tried an alternative approach to solve these issues, but the fundamental problem with transaction management still persists. I would appreciate your thoughts and suggestions on this matter.

Hello,

I am currently developing an application using ABP Framework with Hexagonal (Ports & Adapters) architectural pattern. In our project, we are implementing the CQRS (Command Query Responsibility Segregation) pattern, utilizing separate DbContexts and their respective database connections for Command and Query operations.

Issue Encountered: I'm experiencing difficulties integrating ABP Framework's Unit of Work mechanism into our current architecture. Specifically, I want to implement transaction management at the controller level.

Expected Behavior:

  • Initiation of transaction scope at the controller level
  • Automatic rollback of all database operations (performed across multiple DbContexts) in case of any exception during the process
  • Commit of all changes when the transaction is successful

Due to limitations in our current infrastructure, I am unable to meet these requirements and need assistance on how to properly implement ABP Framework's Unit of Work pattern.

Problem Description: In our project using Hexagonal architecture and CQRS pattern, we were experiencing difficulties in managing transactions across multiple DbContexts. Specifically, we needed to initiate transaction scope at the controller level and roll back all operations in case of exceptions.

Implementation Details:

DbContext Configuration: Created two separate DbContexts for Command and Query operations Both DbContexts inherit from BaseDbContext (AbpDbContext), IBaseDbContext, and IAuditLoggingDbContext Configured OnConfiguring method to use the appropriate connection string based on request type (Command/Query) Use Case Layer Implementation: Created separate Use Case classes for each entity (Example: CreateEntityNameUseCase) Injected relevant repositories into Use Case classes using Dependency Injection Configured each Use Case to call its corresponding repository methods Repository Layer Implementation: Created separate Command and Query repositories for each entity Implemented repository classes with the following structure: EntityNameDbContextNameRepository : EfCoreDbContextNameRepository<EntityName, EntityId>, IEntityNameDbContextNameRepository Designed repository methods to operate directly on the respective DbContext Example Create method: public async Task CreateEntityNameAsync(EntityName entity) { xxCommandDbContext.Set().Add(entity); await xxCommandDbContext.SaveChangesAsync(); return entity; }

Key Points: Implemented CQRS pattern using separate DbContexts for Command and Query operations Maintained clear boundaries between layers following Hexagonal architecture principles Ensured consistent repository implementation across all entities Achieved loose coupling between components using Dependency Injection Adopted standardized approach to entity operations across the application Benefits of this Implementation:

Clear separation of read and write operations Scalable and maintainable codebase Consistent data access across the application Easy integration with ABP Framework's built-in features

Technologies Used:

  • ABP Framework
  • .NET Core
  • Entity Framework Core
  • CQRS Pattern
  • Hexagonal Architecture

Code views of some files are as in the links below;

https://prnt.sc/J-lLInOw3CTP https://prnt.sc/wC26zqblG6LN https://prnt.sc/iryqe56p7Rp0 https://prnt.sc/g_hRBHesKJql https://prnt.sc/yLowmTvtAkHN https://prnt.sc/KEcCC2IWOZg4 https://prnt.sc/V9CTqawtcAL2 https://prnt.sc/YzLbUE6lMfmH

  • ABP Framework version: v9.0.2
  • UI Type: -
  • Database System: EF Core (PostgreSQL)
  • Tiered (for MVC) or Auth Server Separated (for Angular): yes
  • Exception message and full stack trace:
  • Steps to reproduce the issue:

I am developing a Tenant Management system using the ABP Framework. The project does not include Commercial modules. However, I would like to design a system with the following features. I am requesting guidance and support for implementing dynamic connection management and using separate database servers for read/write operations.

Requirements:

  1. Tenant-Based Module Management The system will have modules like bank, cash, and orders, which will be structured using a microservice architecture. The following database connection scenarios will be applied for each tenant: Bank Module: Connects with a tenant-specific connection string. Cash and Order Modules: Each uses a separate connection string. Other Modules (e.g., user management): Operates on a default database connection.
  2. Separate Database Servers for Read and Write Operations GET (read) operations will use a dedicated database server (X Server). CREATE, UPDATE, DELETE (write) operations will use a separate database server (Y Server). The replication and synchronization between X Server and Y Server will be managed by the database administration team. In summary: X Server should be used for GET operations. Y Server should be used for CREATE, UPDATE, DELETE operations.
  3. Angular Frontend Integration The Angular-based frontend should implement a system to manage module connections based on the tenant information. When a user opens any module (e.g., bank module): If a tenant-specific connection string exists, it should be used. If no tenant-specific connection string is defined, a default database connection should be used. Example Scenario: Connection Strings for Tenant1 Bank Module

GET operations: Server=banka-server-get;Database=tenant1_banka_db;User Id=...;Password=...; UPDATE, CREATE, DELETE operations: Server=banka-server-other;Database=tenant1_banka_db;User Id=...;Password=...; Cash Module

GET operations: Server=kasa-server-get;Database=tenant1_kasa_db;User Id=...;Password=...; UPDATE, CREATE, DELETE operations: Server=kasa-server-other;Database=tenant1_kasa_db;User Id=...;Password=...; Order Module

GET operations: Server=siparis-server-get;Database=tenant1_siparis_db;User Id=...;Password=...; UPDATE, CREATE, DELETE operations: Server=siparis-server-other;Database=tenant1_siparis_db;User Id=...;Password=...; Other Modules

GET operations: Server=default-server-get;Database=common_db;User Id=...;Password=...; UPDATE, CREATE, DELETE operations: Server=default-server-other;Database=common_db;User Id=...;Password=...; Expected Solution:

  1. Dynamic Connection Management with ABP Framework A proposal for managing tenant-based dynamic database connections using the ABP Framework. An example approach for configuring separate database connections for read and write operations.
  2. Domain and Application Layer Development Suggestions Examples of required development for tenant-based connection string management in the domain or application layer.
  3. Angular Frontend Integration Suggestions for implementing module-based API calls using tenant information on the frontend. Goal: To establish a flexible infrastructure for tenant-based connection management and utilize separate servers for read/write operations. I aim to achieve the above requirements using the ABP Framework's existing capabilities. However, I could not find a direct example addressing this scenario in the ABP Framework documentation. I would appreciate your guidance and recommendations.

Thank you!

  • ABP Framework version: v7.1.1
  • UI Type: Angular
  • Database System: EF Core (SQL Server, Oracle, MySQL, PostgreSQL, etc..)
  • Tiered (for MVC) or Auth Server Separated (for Angular): yes
  • Exception message and full stack trace:
  • Steps to reproduce the issue:
  • ABP Framework version: v4.4.2
  • UI type: Angular & Dotnet Core 5.0
  • DB provider: EF Core
  • Tiered (MVC) or Identity Server Separated (Angular): yes
  • Exception message and stack trace:
  • Steps to reproduce the issue:"

Hello, I have a technical problem. We are trying to create the developer environment for our project. For this, I created a new database for the developer environment (appsetting.dev.json) Everything worked normally until now, but after that I wanted to add a new tenant. When adding Tenant I defined admin mail adress as hi@developer.dev and the password as Developer123. When I log out and try to log in to the system with the new tenant with hi@developer.dev which I supposed was my admin, I recieved “Invalid user id or password” I checked the AbpUsers table and couldn’t see the hi@developer.dev user.

Question 1: Without selecting a tenant I could login to the system but when I select the tenant I cannot login to the system, what did I do wrong?

When I have a problem with the hi@developer.dev, I tried to register as new user by swithing to Developer tenant. This time I got an smtp error. Here is my second question. When we try to register as new user, can we cancel the event of sending an e-mail to the relevant person? If yes, how will it be? I would be glad if you help. Good work, Take it easy.

Screenshots Stage-1:https://prnt.sc/0TfSgjcU0m5r Stage-2:https://prnt.sc/eR8P-KqugBzl Stage-3:https://prnt.sc/F8I8bNOCqcoi Stage-4:https://prnt.sc/TlHAzsoPX13d Problem 2: Stage-1:https://prnt.sc/QZsht_iZRC6n Stage-2:https://prnt.sc/sOGeFOi214br Errors: https://www.file.io/hbhY/download/4KdDOpOU9zxL

Showing 1 to 5 of 5 entries
Made with ❤️ on ABP v9.2.0-preview. Updated on January 08, 2025, 14:09