hi
You can test this
public class MyExtraPropertyDictionaryValueComparer : ValueComparer<ExtraPropertyDictionary>
{
public MyExtraPropertyDictionaryValueComparer()
: base(
(a, b) => Compare(a, b),
d => d.Aggregate(0, (k, v) => HashCode.Combine(k, v.GetHashCode())),
d => new ExtraPropertyDictionary(d))
{
}
private static bool Compare(ExtraPropertyDictionary? a, ExtraPropertyDictionary? b)
{
if (a == null && b == null)
{
return true;
}
if (a == null && b != null || a != null && b == null)
{
return false;
}
return a!.SequenceEqual(b!);
}
}
builder.Entity<IdentityUser>(b =>
{
b.ToTable(AbpIdentityDbProperties.DbTablePrefix + "Users", AbpIdentityDbProperties.DbSchema);
b.ConfigureByConvention();
b.Property(x => x.LockoutEnd).HasColumnName(nameof(IdentityUser.LockoutEnd));
b.Property(x => x.Id).HasColumnName(nameof(IdentityUser.Id));
b.Property(x => x.ExtraProperties)
.HasColumnName(nameof(IHasExtraProperties.ExtraProperties))
.HasConversion(new ExtraPropertiesValueConverter(b.Metadata.ClrType))
.Metadata.SetValueComparer(new MyExtraPropertyDictionaryValueComparer());
});
builder.Entity<IdentityUserView>(b =>
{
b.ToTable(AbpAuditLoggingDbProperties.DbTablePrefix + "Users", AbpIdentityDbProperties.DbSchema);
b.ConfigureByConvention();
b.Property(x => x.ExtraProperties)
.HasColumnName(nameof(IHasExtraProperties.ExtraProperties))
.HasConversion(new ExtraPropertiesValueConverter(b.Metadata.ClrType))
.Metadata.SetValueComparer(new MyExtraPropertyDictionaryValueComparer());
b.Property(x => x.Id).HasColumnName(nameof(IdentityUser.Id));
b.Property(x => x.AccessFailedCount).HasColumnName(nameof(IdentityUser.AccessFailedCount));
b.Property(x => x.Email).HasColumnName(nameof(IdentityUser.Email)).HasMaxLength(256);
b.Property(x => x.EmailConfirmed).HasColumnName(nameof(IdentityUser.EmailConfirmed));
b.Property(x => x.IsActive).HasColumnName(nameof(IdentityUser.IsActive));
b.Property(x => x.IsExternal).HasColumnName(nameof(IdentityUser.IsExternal));
b.Property(x => x.LockoutEnabled).HasColumnName(nameof(IdentityUser.LockoutEnabled));
b.Property(x => x.LockoutEnd).HasColumnName(nameof(IdentityUser.LockoutEnd));
b.Property(x => x.Name).HasColumnName(nameof(IdentityUser.Name)).HasMaxLength(64);
b.Property(x => x.NormalizedEmail).HasColumnName(nameof(IdentityUser.NormalizedEmail)).HasMaxLength(256);
b.Property(x => x.NormalizedUserName).HasColumnName(nameof(IdentityUser.NormalizedUserName)).HasMaxLength(256);
b.Property(x => x.PasswordHash).HasColumnName(nameof(IdentityUser.PasswordHash)).HasMaxLength(256);
b.Property(x => x.PhoneNumber).HasColumnName(nameof(IdentityUser.PhoneNumber)).HasMaxLength(16);
b.Property(x => x.PhoneNumberConfirmed).HasColumnName(nameof(IdentityUser.PhoneNumberConfirmed));
b.Property(x => x.SecurityStamp).HasColumnName(nameof(IdentityUser.SecurityStamp)).HasMaxLength(256);
b.Property(x => x.Surname).HasColumnName(nameof(IdentityUser.Surname)).HasMaxLength(64);
b.Property(x => x.TwoFactorEnabled).HasColumnName(nameof(IdentityUser.TwoFactorEnabled));
b.Property(x => x.UserName).HasColumnName(nameof(IdentityUser.UserName)).HasMaxLength(256);
b.HasOne<IdentityUser>().WithOne().HasForeignKey<IdentityUserView>(e => e.Id);
});
hi
Im not sure. You can google it .
https://www.google.com/search?q=hangfire+dashboard+angular https://medium.com/we-code/integrate-hangfire-dashboard-with-angular-using-jwt-token-e15ded8eee81
hi
I created one of them and the others were created automatically. What are these two automatically created for?
Abp will have some built-in jobs, which is what you see.
I would also like to know if I created the classes related to Jobs in the correct places?
You can define and implement it in domain(domain.shared). Of course, it is not wrong in the application layer.
3-) The AbpBackgroundJobs table what is this table for and how does it work to fill it in and what is its purpose?
You don't need to care about it. abp framework will use it.
hi
Please check the request in the browser. I think the browser blocks some cookies.
hi
The application startup is not too slow from the logs.
2023-09-28 20:27:12.364 -06:00 [INF] Starting MBS.ModernCloud.HttpApi.Host.
//...
2023-09-28 20:27:17.927 -06:00 [INF] Now listening on: http://10.0.0.213:5001
but you can try to disable the background job
https://docs.abp.io/en/abp/latest/Background-Jobs#disable-job-execution
and try to remove the DynamicLocalizationResourceContributor from AbpLocalizationOptions
Configure<AbpLocalizationOptions>(options =>
{
options.GlobalContributors.Add<DynamicLocalizationResourceContributor>();
});
hi
Are you using Lepton or Lepton X?
Can you share some obvious screenshots?
hi
The query uses the 'First'/'FirstOrDefault' operator without 'OrderBy' and filter operators. This may lead to unpredictable results.
This is the reason that we use orderby.
hi
In this case, you'd better download the source code and disable them in the code.
hi
I will check Country and CountryView .