Hi,
Did you configure the
AutoEventSelectors
Configure<AbpDistributedEntityEventOptions>(options => { options.AutoEventSelectors.Add<OrganizationUnit>(); options.EtoMappings.Add<OrganizationUnit, OrganizationUnitEto>(); });
Hi,
yes in my DomainModule, here is the ConfigureServices
method
public override void ConfigureServices(ServiceConfigurationContext context)
{
base.ConfigureServices(context);
Configure<AbpDistributedEntityEventOptions>(options =>
{
options.AutoEventSelectors.Add<OrganizationUnit>();
options.EtoMappings.Add<OrganizationUnit, OrganizationUnitEto>();
});
}
I have the micro-service architecture.
Follow the steps described in https://docs.abp.io/en/abp/latest/Distributed-Event-Bus#entity-synchronizer and try to synchronize OrganizationUnit (so I can have a replica of the table in my custom service)
Here is the synchronizer class
public class CssDepartmentSynchronizer :
EntitySynchronizer<CssDepartment, OrganizationUnitEto>
{
private readonly ILogger<CssDepartmentSynchronizer> _logger;
public CssDepartmentSynchronizer(
IObjectMapper objectMapper,
IRepository<CssDepartment> repository,
ILogger<CssDepartmentSynchronizer> logger) : base(objectMapper, repository)
{
_logger = logger;
}
public override Task HandleEventAsync(EntityCreatedEto<OrganizationUnitEto> eventData)
{
_logger.LogInformation("CssDepartmentSynchronizer EntityCreatedEto");
return base.HandleEventAsync(eventData);
}
public override Task HandleEventAsync(EntityDeletedEto<OrganizationUnitEto> eventData)
{
_logger.LogInformation("CssDepartmentSynchronizer EntityDeletedEto");
return base.HandleEventAsync(eventData);
}
public override Task HandleEventAsync(EntityUpdatedEto<OrganizationUnitEto> eventData)
{
_logger.LogInformation("CssDepartmentSynchronizer EntityUpdatedEto");
return base.HandleEventAsync(eventData);
}
protected override async Task<CssDepartment?> FindLocalEntityAsync(OrganizationUnitEto eto)
{
_logger.LogInformation("CssDepartmentSynchronizer FindLocalEntityAsync");
var entity = await Repository.FindAsync(d => d.Id == eto.Id);
if (entity == null)
_logger.LogInformation("CssDepartmentSynchronizer not found");
else
_logger.LogInformation("CssDepartmentSynchronizer found");
return entity;
}
}
This class is not being hit (no logs added to the logs file). Similar code for IdentityUser works fine
public class CssUserSynchronizer :
EntitySynchronizer<CssUser, UserEto>
hi
One way is a good approach. You can use
GUID? UserId
in your module.
You mean just define a property UserId
in my module without any relation? or define an entity replica to IdentityUser
entity and connect my Service
entity to it?
I'm building an app using the micro-service template.
I have an entity called Service
in my microservice project, this entity has some navigation properties related to Identity entities (Owner
which should relate to IdentityUser
entity, and Department
which should relate to OrganizationUnit
entity).
What is the best way to define this relation?
I searched some topics and read the docs:
UserLookupService
(defined in Volo.Abp.Users
). OrganizationUnit
doesn't.