To successfully deliver the multitenant with multiple database support, the framework should validate the given connection string information. Defining a connection string for a tenant is a must to create a tenant. Therefore validating the connection string before saving by the application is required. I believe validation of the connection string is a must of having multiple db support for multitenancy feature.
Hi,
Is it possible to load module(s) at runtime instead of adding them using "DependsOnAttribute"? Or can you suggest a reasonable workaround compatible with Abp framework?
For example;
public class ModuleA : AbpModule
{
public override void PreConfigureServices(ServiceConfigurationContext context)
{
if (...)
{
context.Services.AddDependentModule(typeof(ModuleX));
}
else
{
context.Services.AddDependentModule(typeof(ModuleY));
}
}
}
Instead of
[DependsOn(typeof(ModuleX))]
[DependsOn(typeof(ModuleY))]
public class ModuleA : AbpModule
...
ABP Framework version: v4.3
Hi, getPasswordValidators method in '@abp/ng.theme.shared' library does not work except Latin alphabet. Could you please check?
Thanks
Hi, I have seen some fields that are not translated into several languages such as Russian, French, German, Spanish, Portuguese and Arabic. I would like to know that does ABP plan to make development for those language fields?
Hi,
I want to override abp's messages like "EntityNotFoundErrorMessage". I've tried inheriting resources but it didn't work.
Any ideas will be appreciated.
Thanks.
Hi,
I've a validator class which inherits FluentValidaton's abstract class described as AbstractValidator<T>
. I inject IRepository<MyEntity>
within the constructor. Then I use this repository in a private method of my validator. Before 4.3.0 upgrade this code works fine. But after the upgrade it throws an exception that says "Cannot access a disposed context instance...". And also if I inject IUnitOfWorkManager
and start a new unit of work by using scope, my code works fine again. What is the problem that lies behind, any ideas?
public class MyDtoValidator : AbstractValidator<MyDto>
{
private readonly IRepository<MyEntity, long> _repository;
private readonly IUnitOfWorkManager _unitOfWorkManager;
public MyDtoValidator(IRepository<MyEntity, long> repository,
IUnitOfWorkManager unitOfWorkManager)
{
_repository = repository;
_unitOfWorkManager = unitOfWorkManager;
RuleFor(cf => cf.Property).NotEmpty().MustAsync((dto, key, cancellationToken) => MyAsyncMethod(dto)).WithMessage((dto, field) =>
{
return "message";
}); ;
}
private async Task<bool> MyAsyncMethod(MyDto dto)
{
using (var uow = _unitOfWorkManager.Begin(true)) // without this line, it crashes.
{
var query = await _repository.GetQueryableAsync();
query = query.Where(x => x.Property == dto.Property);
var existingDto = await _repository.AsyncExecuter.FirstOrDefaultAsync(query);
return !(existingDto != null && dto.Id != existingDto.Id);
}
}
}
Thanks for your attention.
Hi,
I've added an entity to my context which has a navigation property to tenants table. Migration file's been created with success. But when I try to run DbMigrator app, it throws an exception like this:
And my entity's config is like this:
gl.HasOne(g => g.Tenant).WithMany().HasForeignKey(g => g.TenantId);
How can I solve this problem?
Thanks.
PS: Related with this post
Hi,
I've added extension column to users table which is a foreign key to another table. While creating a new tenant, framework tries to create an admin user for that tenant but it fails because of this extension column which is null while creating the admin user. How can I resolve this issue?
Thanks for your help.
Hi,
I want to create buckets dynamically at runtime (and named blob containers also) depends on incoming data (for example I want to store data with daily bucket names. If a record is created on 29-12-2020, my bucket name should be bucket-29-12-2020). But Abp supports blob container configuration while configuring services at startup. How can I achieve this functionality ?
Thanks for your help.
Hi,
I need to change identity server client secrets. It's defined as E5Xd4yMqjP5kjWFKrYgySBju6JVfCzMyFp7n2QmMrME= in seeder class as static. How "1q2w3e* " is encoded to this value?
Thanks for your help.