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:
Transaction Management Issue:
Usage Scenario Incompatibility:
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:
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:
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
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:
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:
Thank you!
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