Base solution for your next web application
Open Closed

Error when removing table prefix in v10.0 #9889


User avatar
0
wizgod created

Greetings Programs!

I have used the following to remove the table prefixes for all versions up to 9 (.Net Core + Angular) with no issues.

modelBuilder.ChangeAbpTablePrefix<Tenant, Role, User>("");

In v10, with a clean install, I had to change the Target Framework to .NET 5.0 in order to run.

I successfully executed update-database to create the initial tables.

When I went to change the table prefix with the line above, I received the error below.

Is there any additional configuration I need to make for v10?

Thanks,

Wg

System.InvalidOperationException: Both 'TenantFeatureSetting' and 'EditionFeatureSetting' are mapped to the table 'AbpFeatures'. All the entity types in a hierarchy that don't have a discriminator must be mapped to different tables. See https://go.microsoft.com/fwlink/?linkid=2130430 for more information.
   at Microsoft.EntityFrameworkCore.Infrastructure.RelationalModelValidator.ValidateTPTMapping(IEntityType rootEntityType, Boolean forTables)
   at Microsoft.EntityFrameworkCore.Infrastructure.RelationalModelValidator.ValidateInheritanceMapping(IModel model, IDiagnosticsLogger`1 logger)
   at Microsoft.EntityFrameworkCore.Infrastructure.ModelValidator.Validate(IModel model, IDiagnosticsLogger`1 logger)
   at Microsoft.EntityFrameworkCore.Infrastructure.RelationalModelValidator.Validate(IModel model, IDiagnosticsLogger`1 logger)
   at Microsoft.EntityFrameworkCore.SqlServer.Internal.SqlServerModelValidator.Validate(IModel model, IDiagnosticsLogger`1 logger)
   at Microsoft.EntityFrameworkCore.Metadata.Conventions.ValidatingConvention.ProcessModelFinalized(IModel model)
   at Microsoft.EntityFrameworkCore.Metadata.Conventions.Internal.ConventionDispatcher.ImmediateConventionScope.OnModelFinalized(IModel model)
   at Microsoft.EntityFrameworkCore.Metadata.Conventions.Internal.ConventionDispatcher.OnModelFinalized(IModel model)
   at Microsoft.EntityFrameworkCore.Metadata.Internal.Model.FinalizeModel()
   at Microsoft.EntityFrameworkCore.ModelBuilder.FinalizeModel()
   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.<>c.<TryAddCoreServices>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.<>c__DisplayClass1_0.<RealizeService>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<System.IServiceProvider>.get_Instance()
   at Microsoft.EntityFrameworkCore.Infrastructure.Internal.InfrastructureExtensions.GetService[TService](IInfrastructure`1 accessor)
   at Microsoft.EntityFrameworkCore.Infrastructure.AccessorExtensions.GetService[TService](IInfrastructure`1 accessor)
   at Microsoft.EntityFrameworkCore.Design.Internal.DbContextOperations.CreateContext(Func`1 factory)
   at Microsoft.EntityFrameworkCore.Design.Internal.DbContextOperations.CreateContext(String contextType)
   at Microsoft.EntityFrameworkCore.Design.Internal.MigrationsOperations.AddMigration(String name, String outputDir, String contextType, String namespace)
   at Microsoft.EntityFrameworkCore.Design.OperationExecutor.AddMigrationImpl(String name, String outputDir, String contextType, String namespace)
   at Microsoft.EntityFrameworkCore.Design.OperationExecutor.AddMigration.&lt;&gt;c__DisplayClass0_0.&lt;.ctor&gt;b__0()
   at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.&lt;&gt;c__DisplayClass3_0`1.<Execute>b__0()
   at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.Execute(Action action)
Both 'TenantFeatureSetting' and 'EditionFeatureSetting' are mapped to the table 'AbpFeatures'. All the entity types in a hierarchy that don't have a discriminator must be mapped to different tables. See https://go.microsoft.com/fwlink/?linkid=2130430 for more information.

11 Answer(s)
  • User Avatar
    0
    ismcagdas created
    Support Team

    Hi @wizgod

    Thank you for your report. We haven't tried this with .NET 5 version. None of the unit tests failed but this could be a problem in .NET 5 version.

    1. Could you create an issue on GitHub ? We can check this ina short time.
    2. About the TargetFramework problem, when did you download the solution ?

    Thanks,

  • User Avatar
    0
    wizgod created

    Hi @ismcagdas,

    I will create an issue on GitHub.

    I downloaded the project today @ 10:15am MST. The error I receive for all the projects is:

    NU1202	Package Abp.AspNetZeroCore 3.0.0 is not compatible with netcoreapp3.1 (.NETCoreApp,Version=v3.1). Package Abp.AspNetZeroCore 3.0.0 supports: net50 (.NETFramework,Version=v5.0)	PTA.Web.Host
    

    Thanks,

    Wg

  • User Avatar
    0
    ismcagdas created
    Support Team

    Hi @wizgod

    Thanks, I have seend the issue and put it in 10.1 version. Do you remember the selected items on https://aspnetzero.com/Download ? It seems like your project is created with TargetFramework netcoreapp3.1 but it should be .NET 5.

    When I go to https://aspnetzero.com/Download, I can't see any other option than .NET 5 as Target Framework.

  • User Avatar
    0
    wizgod created

    Thanks @ismcagdas; the project was generated using the generate latest drop down in the download history section.

    A new project was generated manually using the .NET 5 selection and it ran successfully this time without any issues; I assume that it did not update the framework when generating from tthe download history.

    I look forward to 10.1 to fix the change prefix issue (or perhaps a specific fix that I can implement sooner).

    Thanks,

    Wg

  • User Avatar
    0
    ismcagdas created
    Support Team

    Hi @wizgod

    Thanks a lot, we will fix the bug related to download process. I will take a look at the problem soon and share a workaround if possible before releasing 10.1.

  • User Avatar
    0
    billyteng created

    Hi ismcagdas ,

    When will release 10.1 and this removing table prefix fix in 10.1 version?

    Thanks

  • User Avatar
    0
    ismcagdas created
    Support Team

    Hi @billyteng

    It is planned for today.

  • User Avatar
    0
    wizgod created

    Hi @ismcagdas,

    With a new, manually generated 10.1, project, I am now receiving the following error when I try to remove the table prefix.

    Thanks,

    Wg

    Applying migration '20201217075257_Upgrade_To_ABP_6_1'.
    Done.
    PM> add-migration Remove_Abp_Prefix -context ptadbcontext
    Build started...
    Build succeeded.
    An operation was scaffolded that may result in the loss of data. Please review the migration for accuracy.
    To undo this action, use Remove-Migration.
    PM> update-database
    Build started...
    Build succeeded.
    Applying migration '20210114221539_Remove_Abp_Prefix'.
    System.InvalidOperationException: To change the IDENTITY property of a column, the column needs to be dropped and recreated.
       at Microsoft.EntityFrameworkCore.Migrations.SqlServerMigrationsSqlGenerator.Generate(AlterColumnOperation operation, IModel model, MigrationCommandListBuilder builder)
       at Microsoft.EntityFrameworkCore.Migrations.MigrationsSqlGenerator.<>c.<.cctor>b__83_4(MigrationsSqlGenerator g, MigrationOperation o, IModel m, MigrationCommandListBuilder b)
       at Microsoft.EntityFrameworkCore.Migrations.MigrationsSqlGenerator.Generate(MigrationOperation operation, IModel model, MigrationCommandListBuilder builder)
       at Microsoft.EntityFrameworkCore.Migrations.SqlServerMigrationsSqlGenerator.Generate(MigrationOperation operation, IModel model, MigrationCommandListBuilder builder)
       at Microsoft.EntityFrameworkCore.Migrations.MigrationsSqlGenerator.Generate(IReadOnlyList`1 operations, IModel model, MigrationsSqlGenerationOptions options)
       at Microsoft.EntityFrameworkCore.Migrations.SqlServerMigrationsSqlGenerator.Generate(IReadOnlyList`1 operations, IModel model, MigrationsSqlGenerationOptions options)
       at Microsoft.EntityFrameworkCore.Migrations.Internal.Migrator.GenerateUpSql(Migration migration, MigrationsSqlGenerationOptions options)
       at Microsoft.EntityFrameworkCore.Migrations.Internal.Migrator.<>c__DisplayClass16_2.<GetMigrationCommandLists>b__2()
       at Microsoft.EntityFrameworkCore.Migrations.Internal.Migrator.Migrate(String targetMigration)
       at Microsoft.EntityFrameworkCore.Design.Internal.MigrationsOperations.UpdateDatabase(String targetMigration, String connectionString, String contextType)
       at Microsoft.EntityFrameworkCore.Design.OperationExecutor.UpdateDatabaseImpl(String targetMigration, String connectionString, String contextType)
       at Microsoft.EntityFrameworkCore.Design.OperationExecutor.UpdateDatabase.<>c__DisplayClass0_0.<.ctor>b__0()
       at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.Execute(Action action)
    To change the IDENTITY property of a column, the column needs to be dropped and recreated.
    
  • User Avatar
    0
    billyteng created

    Hi wizgod,

    This ticket solved my problems . https://support.aspnetzero.com/QA/Questions/9972/Error-when-removing-table-prefix-in-v101. 1.Delete all migration files in the Migrations folder. 2.Regenerate a new migration. 3.Run the Migrator program.

  • User Avatar
    0
    wizgod created

    Hi @billyteng,

    Thanks very much! It worked for me too.

    Wg

  • User Avatar
    0
    ismcagdas created
    Support Team

    Thanks @billyteng :)