hi
ObjectHelper.TrySetProperty(
multiTenantEntity,
x => x.TenantId,
() => your_tenantId
);
hi
You can try to add InvariantGlobalization
to DbMigrator
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<InvariantGlobalization>true</InvariantGlobalization>
</PropertyGroup>
</Project>
https://learn.microsoft.com/en-us/dotnet/core/runtime-config/globalization
ok, Please wait for the email reply. Thanks.
Hi,
You can send an email to license@abp.io. your ticket refunded.
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.