I have removed builder.ConfigureBlobStoring() from the module public class ConnectDbContext : AbpDbContext<ConnectDbContext>, IConnectDbContext and every thing worked as expected
I am using ABP Framework (ABP Suite) in a Monolithic Modular architecture (DDD model).
In one of my entities, I used a File type property to store a file as a blob. For this purpose, I configured the database blob provider inside my module.
Inside XXXXEntityFrameworkCoreModule : AbpModule, I added the following configuration:
Configure<AbpBlobStoringOptions>(options =>
{
options.Containers.ConfigureDefault(container =>
{
container.UseDatabase();
});
});
The project compiles successfully.
I prefer to store module-specific migrations within the module itself, so I generated the migration using the following command:
dotnet ef migrations add Add_PSPluginVersion \
--context ConnectDbContext \
--project "$(git rev-parse --show-toplevel)/modules/connect/src/Mantle.Connect.EntityFrameworkCore/" \
--startup-project "$(git rev-parse --show-toplevel)/src/Mantle.PowerAut0mater.HttpApi.Host/"
The migration was generated with the following table creation statements:
AbpBlobContainersAbpBlobsHowever, these tables already exist in the database, so applying the migration results in an error due to duplicate table creation.
Generated migration snippet:
migrationBuilder.CreateTable(
name: "AbpBlobContainers",
columns: table => new
{
Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
TenantId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
Name = table.Column<string>(type: "nvarchar(128)", maxLength: 128, nullable: false),
ExtraProperties = table.Column<string>(type: "nvarchar(max)", nullable: false),
ConcurrencyStamp = table.Column<string>(type: "nvarchar(40)", maxLength: 40, nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_AbpBlobContainers", x => x.Id);
});
migrationBuilder.CreateTable(
name: "AbpBlobs",
columns: table => new
{
Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
ContainerId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
TenantId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
Name = table.Column<string>(type: "nvarchar(256)", maxLength: 256, nullable: false),
Content = table.Column<byte[]>(type: "varbinary(max)", maxLength: 2147483647, nullable: true),
ExtraProperties = table.Column<string>(type: "nvarchar(max)", nullable: false),
ConcurrencyStamp = table.Column<string>(type: "nvarchar(40)", maxLength: 40, nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_AbpBlobs", x => x.Id);
table.ForeignKey(
name: "FK_AbpBlobs_AbpBlobContainers_ContainerId",
column: x => x.ContainerId,
principalTable: "AbpBlobContainers",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
These tables are already available in the database, likely created by the main application migration. However, when generating migrations inside the module, the system attempts to recreate them, causing migration conflicts.
What is the recommended approach when using the Database Blob Provider in a modular monolithic architecture where:
AbpBlobs and AbpBlobContainers) already exist in the main databaseHow can I prevent the migration generator from recreating these existing ABP blob tables?
modules/
connect/
src/
Mantle.Connect.EntityFrameworkCore
Mantle.Connect.Domain
Mantle.Connect.Application
...
src/
Mantle.PowerAut0mater.EntityFrameworkCore
Mantle.PowerAut0mater.HttpApi.Host
...
Subject: ABP Proxy Generator Overrides Custom Tags Type Declaration
Environment:
abp generate-proxy -t ng -m connect --url https://localhost:44348 --target connectIssue Description:
I have a Tags field in the Customer entity that needs to store an array of strings. Since ABP Suite's JSON configuration does not support List types directly, I defined it as a string in the customer.json metadata file.
To override this limitation, I added a property override in both Customer.Extended.cs and CustomerDto.Extended.cs:
public new List<string>? Tags { get; set; } = new List<string>();
This approach worked correctly in AspZero. However, when running the ABP proxy generation command, the TypeScript interfaces are regenerated with conflicting type declarations:
Generated Code (customer.dto.ts):
// Base class defines tags as string | null
export interface CustomerDtoBase {
tags?: string | null;
}
// Extended class attempts to override as string[]
export interface CustomerDto extends CustomerDtoBase {
tags?: string[];
}
This creates a TypeScript compilation error:
TS2430: Interface 'CustomerDto' incorrectly extends interface 'CustomerDtoBase'.
Types of property 'tags' are incompatible.
Type 'string[]' is not assignable to type 'string'.
Current Workaround (Not Sustainable):
I've temporarily fixed this by using Omit to remove the conflicting property:
export interface CustomerDto extends Omit<CustomerDtoBase, 'tags'> {
tags?: string[];
}
However, this workaround is lost every time the proxy is regenerated.
Expected Solution:
The ABP proxy generator should respect C# property overrides and generate TypeScript interfaces that correctly reflect the actual data contract (array of strings), rather than reverting to the base JSON metadata definition.
Alternatively, a configuration option to exclude specific fields from the JSON metadata or to preserve manual overrides would resolve this issue.
Question:
What is the recommended approach to permanently resolve type mismatches between JSON entity metadata and C# property overrides within the ABP proxy generation workflow?
Issue : Instead of direct node installation i used nvm
Node and npm are available in a basic non-interactive shell
so i followed the below on my Mac m3
> which node
/Users/princepark/.nvm/versions/node/v22.22.0/bin/node
> which npm
/Users/princepark/.nvm/versions/node/v22.22.0/bin/npm
> sudo ln -s ~/.nvm/versions/node/v22.22.0/bin/node /usr/local/bin/node
> sudo ln -s ~/.nvm/versions/node/v22.22.0/bin/npm /usr/local/bin/npm
> sudo ln -s ~/.nvm/versions/node/v22.22.0/bin/npx /usr/local/bin/npx
One I have done this, then i have restarted abpstudio, and everthing is owrking now as expected
I have nvm installed in my system and node is installed via nvm,,
Connect|⇒ pwd
/Volumes/Projects/MantleInternational/abpio/mCm/Connect
Connect|⇒ tree -L 1
.
├── angular
├── common.props
├── Directory.DotSettings
├── etc
├── Mantle.Connect.abpmdl
├── Mantle.Connect.abpsln
├── Mantle.Connect.slnx
├── NuGet.Config
├── README.md
├── src
└── test
5 directories, 7 files
Connect|⇒ node -v
v22.22.0
Connect|⇒ npm -v
10.9.4
Connect|⇒ yarn -v
1.22.22
Connect|⇒
I am a new custoner with Personal Licenses, I get error when i try to initialise task
3/9/2026 2:57:02 PM [Information] Checking extensions...
3/9/2026 2:57:02 PM [Information] [14:56:57 WRN] NPM is not installed, visit https://nodejs.org/en/download/ and install NPM
3/9/2026 2:57:02 PM [Information] [14:56:57 INF] Started database migrations...
3/9/2026 2:57:02 PM [Information] [14:56:57 INF] Migrating schema for host database...
3/9/2026 2:57:02 PM [Information] [14:56:58 INF] Executing host database seed...
3/9/2026 2:57:02 PM [Information] [14:56:59 INF] Successfully completed host database migrations.
3/9/2026 2:57:02 PM [Information] [14:56:59 INF] Successfully completed all database migrations.
3/9/2026 2:57:02 PM [Information] [14:56:59 INF] You can safely end this process...
3/9/2026 2:57:02 PM [Information] [14:57:00 INF] Started database migrations...
3/9/2026 2:57:02 PM [Information] [14:57:00 INF] Migrating schema for host database...
3/9/2026 2:57:02 PM [Information] [14:57:01 INF] Executing host database seed...
3/9/2026 2:57:02 PM [Information] [14:57:02 INF] Successfully completed host database migrations.
3/9/2026 2:57:02 PM [Information] [14:57:02 INF] Successfully completed all database migrations.
3/9/2026 2:57:02 PM [Information] [14:57:02 INF] You can safely end this process...
3/9/2026 2:57:02 PM [Information] [1] Listing certificates from CurrentUser\My
3/9/2026 2:57:02 PM [Information] [2] Found certificates: 1 certificate
3/9/2026 2:57:02 PM [Information] 1) CE998F610C94A58A218706FDC83F5750F411BAD7 - CN=localhost - Valid from 2026-01-28 16:16:13Z to 2027-01-28 16:16:13Z - IsHttpsDevelopmentCertificate: true - IsExportable: true
3/9/2026 2:57:02 PM [Information] [3] Checking certificates validity
3/9/2026 2:57:02 PM [Information] [4] Valid certificates: 1 certificate
3/9/2026 2:57:02 PM [Information] 1) CE998F610C94A58A218706FDC83F5750F411BAD7 - CN=localhost - Valid from 2026-01-28 16:16:13Z to 2027-01-28 16:16:13Z - IsHttpsDevelopmentCertificate: true - IsExportable: true
3/9/2026 2:57:02 PM [Information] [5] Invalid certificates: no certificates
3/9/2026 2:57:02 PM [Information] [6] Finished listing certificates.
3/9/2026 2:57:02 PM [Information] [1] Listing certificates from CurrentUser\My
3/9/2026 2:57:02 PM [Information] [2] Found certificates: 1 certificate
3/9/2026 2:57:02 PM [Information] 1) CE998F610C94A58A218706FDC83F5750F411BAD7 - CN=localhost - Valid from 2026-01-28 16:16:13Z to 2027-01-28 16:16:13Z - IsHttpsDevelopmentCertificate: true - IsExportable: true
3/9/2026 2:57:02 PM [Information] [3] Checking certificates validity
3/9/2026 2:57:02 PM [Information] [4] Valid certificates: 1 certificate
3/9/2026 2:57:02 PM [Information] 1) CE998F610C94A58A218706FDC83F5750F411BAD7 - CN=localhost - Valid from 2026-01-28 16:16:13Z to 2027-01-28 16:16:13Z - IsHttpsDevelopmentCertificate: true - IsExportable: true
3/9/2026 2:57:02 PM [Information] [5] Invalid certificates: no certificates
3/9/2026 2:57:02 PM [Information] [6] Finished listing certificates.
3/9/2026 2:57:02 PM [Information] [1] Listing certificates from LocalMachine\My
3/9/2026 2:57:02 PM [Information] [2] Found certificates: no certificates
3/9/2026 2:57:02 PM [Information] [3] Checking certificates validity
3/9/2026 2:57:02 PM [Information] [4] Valid certificates: no certificates
3/9/2026 2:57:02 PM [Information] [5] Invalid certificates: no certificates
3/9/2026 2:57:02 PM [Information] [6] Finished listing certificates.
3/9/2026 2:57:02 PM [Information] [8] Filtered certificates: 1 certificate
3/9/2026 2:57:02 PM [Information] 1) CE998F610C94A58A218706FDC83F5750F411BAD7 - CN=localhost - Valid from 2026-01-28 16:16:13Z to 2027-01-28 16:16:13Z - IsHttpsDevelopmentCertificate: true - IsExportable: true
3/9/2026 2:57:02 PM [Information] [9] Excluded certificates: no certificates
3/9/2026 2:57:02 PM [Information] [14] Valid certificates: 1 certificate
3/9/2026 2:57:02 PM [Information] 1) CE998F610C94A58A218706FDC83F5750F411BAD7 - CN=localhost - Valid from 2026-01-28 16:16:13Z to 2027-01-28 16:16:13Z - IsHttpsDevelopmentCertificate: true - IsExportable: true
3/9/2026 2:57:02 PM [Information] [15] Selected certificate: CE998F610C94A58A218706FDC83F5750F411BAD7 - CN=localhost - Valid from 2026-01-28 16:16:13Z to 2027-01-28 16:16:13Z - IsHttpsDevelopmentCertificate: true - IsExportable: true
3/9/2026 2:57:02 PM [Information] [23] Saving certificate 'CE998F610C94A58A218706FDC83F5750F411BAD7 - CN=localhost - Valid from 2026-01-28 16:16:13Z to 2027-01-28 16:16:13Z - IsHttpsDevelopmentCertificate: true - IsExportable: true' to openiddict.pfx with private key.
3/9/2026 2:57:02 PM [Information] [27] Writing the certificate to: openiddict.pfx.
3/9/2026 2:57:02 PM [Information] A valid HTTPS certificate is already present.
3/9/2026 2:57:02 PM [Information] The certificate was exported to /Volumes/Projects/MantleInternational/abpio/mCm/Connect/src/Mantle.Connect.HttpApi.Host/openiddict.pfx
3/9/2026 2:57:02 PM [Information] OperationStopped: abp install-libs exited with code 127
3/9/2026 2:57:02 PM [Information] Job 'InstallLibs' FAILED
3/9/2026 2:57:02 PM [Information] ./initialize-solution.ps1 exited with code: 1