Hi, I checked your project and found the problem. In your shared.entityframeworkcore project, you should call the builder.ConfigureIdentityPro()
before your entity configuration. Because you are using the FullAuditedEntityWithUser
in the UserNotification entity.
Here is what you should do:
<PackageReference Include="Volo.Abp.Identity.Pro.EntityFrameworkCore" Version="9.0.4" />
to Shared.EntityFrameworkCore.csproj.typeof(AbpIdentityProEntityFrameworkCoreModule)
this depends on statement to SharedEntityFrameworkCoreModule
class.SharedDbContext
class, and update it as follows (don't forget to add builder.ConfigureIdentityPro()
):using Microsoft.EntityFrameworkCore;
using Shared.EntityFrameworkCore.Configurations;
using Shared.Notifications;
using Shared.NotificationTemplates;
using Shared.UserDevices;
using Shared.UserNotifications;
using Volo.Abp.Data;
using Volo.Abp.DependencyInjection;
using Volo.Abp.EntityFrameworkCore;
using Volo.Abp.Identity;
using Volo.Abp.Identity.EntityFrameworkCore;
namespace Shared.EntityFrameworkCore;
[ReplaceDbContext(typeof(IIdentityProDbContext))]
[ConnectionStringName(SharedDbProperties.ConnectionStringName)]
public class SharedDbContext : AbpDbContext<SharedDbContext>, ISharedDbContext, IIdentityProDbContext
{
/* Add DbSet for each Aggregate Root here. Example:
* public DbSet<Question> Questions { get; set; }
*/
public DbSet<UserNotification> UserNotifications { get; set; }
public DbSet<Notification> Notifications { get; set; }
public DbSet<NotificationTemplate> NotificationTemplates { get; set; }
public DbSet<UserDevice> UserDevices { get; set; }
public SharedDbContext(DbContextOptions<SharedDbContext> options)
: base(options)
{
}
protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
builder.ConfigureIdentityPro();
builder.ConfigureShared();
}
//Identity
public DbSet<IdentityUser> Users { get; }
public DbSet<IdentityRole> Roles { get; }
public DbSet<IdentityClaimType> ClaimTypes { get; }
public DbSet<OrganizationUnit> OrganizationUnits { get; }
public DbSet<IdentitySecurityLog> SecurityLogs { get; }
public DbSet<IdentityLinkUser> LinkUsers { get; }
public DbSet<IdentityUserDelegation> UserDelegations { get; }
public DbSet<IdentitySession> Sessions { get; }
}
Then, run the dbmigrator without having a problem.
Hi, I got your project now and trying to reproduce the problem. I will write back to you asap.
Regards.
Hi, can you please check this answer and see if it answers your question?
or User Organization Unit and its dependent Organization Unit in the hierarchy,
Hi, you can use the IdentityUserAppService's GetOrganizationUnitsAsync(Guid id)
to get a user's all organization units. The result will be List<OrganizationUnitDto>
and you can see the parentId's of the related organization units. If it's null, then it means it's a root organization unit.
Regards.
Hi @EngincanV,
Sure. Here are two documentation that you can refer:
I think these docs are not related as the issue is not related to cascade/restrict delete. I want to delete the dependent entity, instead of the principal entity.
Did you test my working ASP.NET Core Web API example app? https://cdn.fuzed.app/share/abp/EFCorePlayground.zip
The following ABP framework example app, with the same EF Core configuration, doesn't work: https://cdn.fuzed.app/share/abp/AbpEFCorePlayground.zip
Best regards, Steff Beckers
Hi, sorry for the misunderstanding (I thought you were expecting a cascade delete/update behavior). I will check your project and write you back asap.
Hello,
I created folders for AbpAccount and AbpIdentiy under Localizations within the Domain.Shared project.
Domain.Shared/Localizations/AbpAccount/en.json
{ "Culture": "en", "Texts": { "DisplayName:Name": "First name", "DisplayName:Surname": "Last name" } }
Domain.Shared/Localizations/AbpIdentity/en.json
{ "Culture": "en", "Texts": { "DisplayName:Name": "First name", "DisplayName:Surname": "Last name", "Name": "First name", "Surname": "Last name" } }
I modified the DomainSharedModule's ConfigureServices as follows:
Configure<AbpLocalizationOptions>(options => { ... options.Resources .Get<IdentityResource>() .AddVirtualJson("/Localization/AbpIdentity"); ... });
I modified the ApplicationContractModule's ConfigurationServices as follows:
Configure<AbpLocalizationOptions>(options => { options.Resources .Get<AccountResource>() .AddVirtualJson("/Localization/AbpAccount"); });
It seems that you did everything right. By any chance, can you share your project via email, so I can better assist you? (support@abp.io with the ticket number)
Hi, you should download the source-code, make the customizations and then recompile to CSS for overriding/or using another font:
To download the source-code, you can use the following command:
abp get-source Volo.Abp.LeptonXTheme
Then, please follow the documentation: https://abp.io/docs/latest/ui-themes/lepton-x/source-files
You can also check this thread if you want.
Hi, we will check this problem and write you back asap. Thanks for your understanding.
Hi, can it be related to https://abp.io/support/questions/4596/Email-Parameter-pasword-set-to-NULL#answer-3a09b39b-df3d-fdcb-f5ee-8e1adf660f20 can you please check? You may have different DefaultPassPhrase
for two projects.
And also please check that can you see the password in the database.
Hi, we are using Bootstrap for our tag helpers, and abp-tab
is no exception. You should be able to hide tabs with both display:none;
and visibility: hidden;
. Please share more information if the following info doesn't help you.
You can hide the first tab as follows for an example on the js side:
$("ul#PermissionsTabs > li:first").hide();
//or for completely hiding all the tabs
$("ul#PermissionsTabs").hide();
If you want to do this on the CSS side, then you can do the following:
ul #PermissionsTabs
{
visibility: hidden !important; //or alternatively -> display: none !important;
}