Activities of "Spospisil"

Answer

Just so others can reference should they have similar issues in the future here is the entire set of TablePrefix settings that need to be configured if you want to change the table name prefix for the standard ABP tables.

        builder.ConfigurePermissionManagement(options => { options.TablePrefix = ""; });
        builder.ConfigureSettingManagement(options => { options.TablePrefix = ""; });
        builder.ConfigureBackgroundJobs(options => { options.TablePrefix = ""; });
        builder.ConfigureAuditLogging(options => { options.TablePrefix = ""; });
        builder.ConfigureIdentity(options => { options.TablePrefix = ""; });
        builder.ConfigureIdentityPro(options => { options.TablePrefix = ""; });
        builder.ConfigureIdentityServer(options => { options.TablePrefix = ""; });
        builder.ConfigureFeatureManagement(options => { options.TablePrefix = ""; });
        builder.ConfigureLanguageManagement(options => { options.TablePrefix = ""; });
        builder.ConfigurePayment(options => { options.TablePrefix = ""; });
        builder.ConfigureSaas(options => { options.TablePrefix = ""; });
        builder.ConfigureTextTemplateManagement(options => { options.TablePrefix = ""; });
        builder.ConfigureBlobStoring(options => { options.TablePrefix = ""; });



        AbpPermissionManagementDbProperties.DbTablePrefix = string.Empty;
        AbpSettingManagementDbProperties.DbTablePrefix = string.Empty;
        BackgroundJobsDbProperties.DbTablePrefix = string.Empty;
        AbpAuditLoggingDbProperties.DbTablePrefix = string.Empty;
        BlobStoringDatabaseDbProperties.DbTablePrefix = string.Empty;
        AbpCommonDbProperties.DbTablePrefix = string.Empty;
        FeatureManagementDbProperties.DbTablePrefix = string.Empty;
        LanguageManagementDbProperties.DbTablePrefix = string.Empty;
        SaasDbProperties.DbTablePrefix = string.Empty;
        TextTemplateManagementDbProperties.DbTablePrefix = string.Empty;
        AbpIdentityDbProperties.DbTablePrefix = string.Empty;
        AbpIdentityServerDbProperties.DbTablePrefix = string.Empty;
Question
  • ABP Framework version: v4.4.0
  • UI type: MVC
  • DB provider: EF Core
  • Tiered (MVC) or Identity Server Separated (Angular): yes
  • Exception message and stack trace:

  • Steps to reproduce the issue:"

I've generated a solution from ABP suite with the above mentioned options. I've chosen to remove all the abp generated prefixes to all the tables using the below code blocks, but when I click the 'Forgot password' link on the standard 'Login Page' and enter the email for the user I wish to send an email to, I get the above detailed error.

I've specified the below code in the program.cs class of the IdentityServer, HttpAPI.Host projects in addition to adding the block to the DbMigratorHostedService.cs class in the DbMirgrator project.

        AbpPermissionManagementDbProperties.DbTablePrefix = string.Empty;
        AbpSettingManagementDbProperties.DbTablePrefix = string.Empty;
        AbpCommonDbProperties.DbTablePrefix = string.Empty;
        SaasDbProperties.DbTablePrefix = string.Empty;
        AbpIdentityServerDbProperties.DbTablePrefix = string.Empty;
        

Additionally in the DBContextBase.cs class of the .EntityFrameworkCore project I've specified this block of code.

        builder.ConfigurePermissionManagement(options => { options.TablePrefix = ""; });
        builder.ConfigureSettingManagement(options => { options.TablePrefix = ""; });
        builder.ConfigureBackgroundJobs(options => { options.TablePrefix = ""; });
        builder.ConfigureAuditLogging(options => { options.TablePrefix = ""; });
        builder.ConfigureIdentityPro(options => { options.TablePrefix = ""; });
        builder.ConfigureIdentityServer(options => { options.TablePrefix = ""; });
        builder.ConfigureFeatureManagement(options => { options.TablePrefix = ""; });
        builder.ConfigureLanguageManagement(options => { options.TablePrefix = ""; });
        builder.ConfigureSaas(options => { options.TablePrefix = ""; });
        builder.ConfigureTextTemplateManagement(options => { options.TablePrefix = ""; });
        builder.ConfigureBlobStoring(options => { options.TablePrefix = ""; });

Applying the following code in the DbMigratorHostedService.cs seemed to have resolved all the errors I was getting.

        AbpPermissionManagementDbProperties.DbTablePrefix = string.Empty;
        AbpSettingManagementDbProperties.DbTablePrefix = string.Empty;
        AbpCommonDbProperties.DbTablePrefix = string.Empty;
        SaasDbProperties.DbTablePrefix = string.Empty;
        AbpIdentityServerDbProperties.DbTablePrefix = string.Empty;

That seems to have solved this particular issue.

now I get this error. I don't want any ABP framework table prefixes on any of the tables created whether it be the host or tenant tables.

SELECT EXISTS ( SELECT 1 FROM "SaasEditions" AS s WHERE (@__ef_filter__p_0 OR NOT (s."IsDeleted")) AND (s."DisplayName" = @__UtyMGa29B_0)) [10:22:17 ERR] An exception occurred while iterating over the results of a query for context type 'Volo.Saas.EntityFrameworkCore.SaasDbContext'. Npgsql.PostgresException (0x80004005): 42P01: relation "SaasEditions" does not exist at Npgsql.NpgsqlConnector.<ReadMessage>g__ReadMessageLong|194_0(NpgsqlConnector connector, Boolean async, DataRowLoadingMode dataRowLoadingMode, Boolean readingNotifications, Boolean isReadingPrependedMessage) at Npgsql.NpgsqlDataReader.NextResult(Boolean async, Boolean isConsuming, CancellationToken cancellationToken) at Npgsql.NpgsqlCommand.ExecuteReader(CommandBehavior behavior, Boolean async, CancellationToken cancellationToken) at Npgsql.NpgsqlCommand.ExecuteReader(CommandBehavior behavior, Boolean async, CancellationToken cancellationToken) at Npgsql.NpgsqlCommand.ExecuteDbDataReaderAsync(CommandBehavior behavior, CancellationToken cancellationToken) at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteReaderAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken) at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteReaderAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken) at Microsoft.EntityFrameworkCore.Query.Internal.SplitQueryingEnumerable1.AsyncEnumerator.InitializeReaderAsync(DbContext _, Boolean result, CancellationToken cancellationToken) at Npgsql.EntityFrameworkCore.PostgreSQL.Storage.Internal.NpgsqlExecutionStrategy.ExecuteAsync[TState,TResult](TState state, Func4 operation, Func4 verifySucceeded, CancellationToken cancellationToken) at Microsoft.EntityFrameworkCore.Query.Internal.SplitQueryingEnumerable1.AsyncEnumerator.MoveNextAsync() Exception data: Severity: ERROR SqlState: 42P01 MessageText: relation "SaasEditions" does not exist Position: 41 File: parse_relation.c Line: 1373 Routine: parserOpenTable Npgsql.PostgresException (0x80004005): 42P01: relation "SaasEditions" does not exist at Npgsql.NpgsqlConnector.<ReadMessage>g__ReadMessageLong|194_0(NpgsqlConnector connector, Boolean async, DataRowLoadingMode dataRowLoadingMode, Boolean readingNotifications, Boolean isReadingPrependedMessage) at Npgsql.NpgsqlDataReader.NextResult(Boolean async, Boolean isConsuming, CancellationToken cancellationToken) at Npgsql.NpgsqlCommand.ExecuteReader(CommandBehavior behavior, Boolean async, CancellationToken cancellationToken) at Npgsql.NpgsqlCommand.ExecuteReader(CommandBehavior behavior, Boolean async, CancellationToken cancellationToken) at Npgsql.NpgsqlCommand.ExecuteDbDataReaderAsync(CommandBehavior behavior, CancellationToken cancellationToken) at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteReaderAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken) at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteReaderAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken) at Microsoft.EntityFrameworkCore.Query.Internal.SplitQueryingEnumerable1.AsyncEnumerator.InitializeReaderAsync(DbContext _, Boolean result, CancellationToken cancellationToken) at Npgsql.EntityFrameworkCore.PostgreSQL.Storage.Internal.NpgsqlExecutionStrategy.ExecuteAsync[TState,TResult](TState state, Func4 operation, Func4 verifySucceeded, CancellationToken cancellationToken) at Microsoft.EntityFrameworkCore.Query.Internal.SplitQueryingEnumerable1.AsyncEnumerator.MoveNextAsync() at Microsoft.EntityFrameworkCore.Query.ShapedQueryCompilingExpressionVisitor.SingleAsync[TSource](IAsyncEnumerable`1 asyncEnumerable, CancellationToken cancellationToken) Exception data: Severity: ERROR SqlState: 42P01 MessageText: relation "SaasEditions" does not exist Position: 41 File: parse_relation.c Line: 1373 Routine: parserOpenTable

  • ABP Framework version: v4.4.0
  • UI type: MVC
  • DB provider: EF Core
  • Tiered (MVC) or Identity Server Separated (Angular): Not Tiered/Seperate Schema

After generating a MVC/EF Core/PostgreSQL/Not Tiered/Seperate Schema solution with ABP suite, I run the two migrations and see the data, but when I run the web project I get the following error.

Tenant not found! There is no tenant with the tenant id or name: 39fe712f-a185-00ae-3daa-3b94ccc3ecaa

Now when I run the dbmigrator project it gives the following message "The string argument 'value' cannot be empty." string

Here is the stack trace

   at Microsoft.EntityFrameworkCore.Utilities.Check.NullButNotEmpty(String value, String parameterName)
   at Microsoft.EntityFrameworkCore.RelationalEntityTypeExtensions.SetSchema(IMutableEntityType entityType, String value)
   at Microsoft.EntityFrameworkCore.RelationalEntityTypeBuilderExtensions.ToTable[TEntity](EntityTypeBuilder`1 entityTypeBuilder, String name, String schema)
   at Volo.Abp.PermissionManagement.EntityFrameworkCore.AbpPermissionManagementDbContextModelBuilderExtensions.&lt;&gt;c__DisplayClass0_0.&lt;ConfigurePermissionManagement&gt;b__0(EntityTypeBuilder`1 b)
   at Microsoft.EntityFrameworkCore.ModelBuilder.Entity[TEntity](Action`1 buildAction)
   at Volo.Abp.PermissionManagement.EntityFrameworkCore.AbpPermissionManagementDbContextModelBuilderExtensions.ConfigurePermissionManagement(ModelBuilder builder, Action`1 optionsAction)
   at MVCTierdSepSchema.EntityFrameworkCore.MVCTierdSepSchemaDbContextBase`1.OnModelCreating(ModelBuilder builder) in C:\Source Code\My Recent\MVCTieredTenantSchema\src\MVCTierdSepSchema.EntityFrameworkCore\EntityFrameworkCore\MVCTierdSepSchemaDbContextBase.cs:line 32
   at MVCTierdSepSchema.EntityFrameworkCore.MVCTierdSepSchemaDbContext.OnModelCreating(ModelBuilder builder) in C:\Source Code\My Recent\MVCTieredTenantSchema\src\MVCTierdSepSchema.EntityFrameworkCore\EntityFrameworkCore\MVCTierdSepSchemaDbContext.cs:line 19
   at Microsoft.EntityFrameworkCore.Infrastructure.ModelCustomizer.Customize(ModelBuilder modelBuilder, DbContext context)
   at Microsoft.EntityFrameworkCore.Infrastructure.ModelSource.CreateModel(DbContext context, IConventionSetBuilder conventionSetBuilder, ModelDependencies modelDependencies)
   at Microsoft.EntityFrameworkCore.Infrastructure.ModelSource.GetModel(DbContext context, IConventionSetBuilder conventionSetBuilder, ModelDependencies modelDependencies)
   at Microsoft.EntityFrameworkCore.Internal.DbContextServices.CreateModel()
   at Microsoft.EntityFrameworkCore.Internal.DbContextServices.get_Model()
   at Microsoft.EntityFrameworkCore.Infrastructure.EntityFrameworkServicesBuilder.&lt;&gt;c.&lt;TryAddCoreServices&gt;b__7_3(IServiceProvider p)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitFactory(FactoryCallSite factoryCallSite, RuntimeResolverContext context)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSiteMain(ServiceCallSite callSite, TArgument argument)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitCache(ServiceCallSite callSite, RuntimeResolverContext context, ServiceProviderEngineScope serviceProviderEngine, RuntimeResolverLock lockType)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitScopeCache(ServiceCallSite singletonCallSite, RuntimeResolverContext context)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSite(ServiceCallSite callSite, TArgument argument)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitConstructor(ConstructorCallSite constructorCallSite, RuntimeResolverContext context)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSiteMain(ServiceCallSite callSite, TArgument argument)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitCache(ServiceCallSite callSite, RuntimeResolverContext context, ServiceProviderEngineScope serviceProviderEngine, RuntimeResolverLock lockType)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitScopeCache(ServiceCallSite singletonCallSite, RuntimeResolverContext context)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSite(ServiceCallSite callSite, TArgument argument)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.Resolve(ServiceCallSite callSite, ServiceProviderEngineScope scope)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.DynamicServiceProviderEngine.&lt;&gt;c__DisplayClass1_0.&lt;RealizeService&gt;b__0(ServiceProviderEngineScope scope)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngine.GetService(Type serviceType, ServiceProviderEngineScope serviceProviderEngineScope)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope.GetService(Type serviceType)
   at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(IServiceProvider provider, Type serviceType)
   at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService[T](IServiceProvider provider)
   at Microsoft.EntityFrameworkCore.DbContext.get_DbContextDependencies()
   at Microsoft.EntityFrameworkCore.DbContext.get_InternalServiceProvider()
   at Microsoft.EntityFrameworkCore.DbContext.Microsoft.EntityFrameworkCore.Infrastructure.IInfrastructure&lt;System.IServiceProvider&gt;.get_Instance()
   at Microsoft.EntityFrameworkCore.Infrastructure.DatabaseFacade.Microsoft.EntityFrameworkCore.Infrastructure.IInfrastructure&lt;System.IServiceProvider&gt;.get_Instance()
   at Microsoft.EntityFrameworkCore.RelationalDatabaseFacadeExtensions.GetRelationalService[TService](IInfrastructure`1 databaseFacade)
   at Microsoft.EntityFrameworkCore.RelationalDatabaseFacadeExtensions.MigrateAsync(DatabaseFacade databaseFacade, CancellationToken cancellationToken)
   at MVCTierdSepSchema.EntityFrameworkCore.EntityFrameworkCoreMVCTierdSepSchemaDbSchemaMigrator.<MigrateAsync>d__2.MoveNext() in C:\Source Code\My Recent\MVCTieredTenantSchema\src\MVCTierdSepSchema.EntityFrameworkCore\EntityFrameworkCore\EntityFrameworkCoreMVCTierdSepSchemaDbSchemaMigrator.cs:line 33
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.GetResult()
   at MVCTierdSepSchema.Data.MVCTierdSepSchemaDbMigrationService.<MigrateDatabaseSchemaAsync>d__10.MoveNext() in C:\Source Code\My Recent\MVCTieredTenantSchema\src\MVCTierdSepSchema.Domain\Data\MVCTierdSepSchemaDbMigrationService.cs:line 95
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.GetResult()
   at MVCTierdSepSchema.Data.MVCTierdSepSchemaDbMigrationService.<MigrateAsync>d__9.MoveNext() in C:\Source Code\My Recent\MVCTieredTenantSchema\src\MVCTierdSepSchema.Domain\Data\MVCTierdSepSchemaDbMigrationService.cs:line 52
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.GetResult()
   at MVCTierdSepSchema.DbMigrator.DbMigratorHostedService.<StartAsync>d__3.MoveNext() in C:\Source Code\My Recent\MVCTieredTenantSchema\src\MVCTierdSepSchema.DbMigrator\DbMigratorHostedService.cs:line 39
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.ConfiguredTaskAwaitable.ConfiguredTaskAwaiter.GetResult()
   at Microsoft.Extensions.Hosting.Internal.Host.<StartAsync>d__9.MoveNext()
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.ConfiguredTaskAwaitable.ConfiguredTaskAwaiter.GetResult()
   at Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.<RunAsync>d__4.MoveNext()
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.<RunAsync>d__4.MoveNext()
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.GetResult()
   at MVCTierdSepSchema.DbMigrator.Program.<Main>d__0.MoveNext() in C:\Source Code\My Recent\MVCTieredTenantSchema\src\MVCTierdSepSchema.DbMigrator\Program.cs:line 30
  1. Add-Migration "HostMigration" -Context MVCTierdSepSchemaDbContext
  2. Then I run dbmigrator and receive the error message
  3. Add-Migration "TenantMigration" -Context MVCTierdSepSchemaTenantDbContext -OutputDir TenantMigrations
  4. Then I run dbmigrator and receive the error message

i have yes and while it creates the schema it fails on seeding the data. i get the same error message regardless.

H Cotur,

Can you detail out what the bug was? I'm using this project as an example of how to implement things in my project so I want to make sure this bug won't affect my project.

Thanks.

Showing 241 to 250 of 261 entries
Made with ❤️ on ABP v9.0.0-preview Updated on September 19, 2024, 10:13