Hi:
host
user , but if you want hidden from the tenant in the user list, you need use object extend system add an identifier (like: IsHostUser
) to IdentityUser
entity and override IdentityUserAppService
to filter IsHostUser
.IsHostPermisson
) to the Properties
property of PermissionDefinition
.ICurrentTenant.Change(null)
to switch to the host , and then you can get all tenants.If I have an incorrect understanding, please let me know. I will try to create an simple example for 1,2,3.
Have a nice day : ).
Hi, ABP uses the unit of work system to save changes after the method returns, but you can save changes manually:
Try :
try
{
//......
await _myRepository.UpdateAsync(myEntity);
await CurrentUnitOfWork.SaveChangesAsync();
}
catch(DbUpdateConcurrencyException ex)
{
// handle exception
}
See Unit of Work Document learn more about unit of work system.
Hi,
I can't reproduce your problem, If you use other database server, will this problem occur?
Hi
Please See https://stackoverflow.com/questions/17650482/instance-failure-error-while-connection-string-is-correct Does the solution here work for you?
Hi,
ABP only integrates rabbitmq for the distributed event bus.You need to implement tis feature yourself.
You can use Rabbitmq to implement RPC: https://www.rabbitmq.com/tutorials/tutorial-six-dotnet.html. or you can directly use grpc :https://grpc.io/docs/languages/csharp/quickstart/
Hi,
Tenants should be able to see the settings page, you can check current user is granted settings management permissions. Like this :
A setting value read from the following provider:
Setting fallback system works from bottom (user) to top (default).
You can set the value using the method of ISettingManager
:
//For tenant's setting
await _settingManager.SetForCurrentUserAsync("App.UI.LayoutType", "LeftMenu");
await _settingManager.SetForUserAsync(user1Id, "App.UI.LayoutType", "LeftMenu");
//For user's setting
await _settingManager.SetForCurrentTenantAsync("App.UI.LayoutType", "LeftMenu");
await _settingManager.SetForTenantAsync(tenant1Id, "App.UI.LayoutType", "LeftMenu");
Have a nice day : ).
GetAllAsync
method internally uses a loop to get all values. It will only make writing simple, but performance will not be improved and there may be 100 settings, and only 40 of them are needed.
I provide another solution here: https://support.abp.io/QA/Questions/263/Efficient-user-of-Settings-and-Features