Skip to content

V3.0.0#65

Merged
chullybun merged 13 commits into
mainfrom
v3.0.0
May 11, 2026
Merged

V3.0.0#65
chullybun merged 13 commits into
mainfrom
v3.0.0

Conversation

@chullybun
Copy link
Copy Markdown
Collaborator

All internal dependencies to CoreEx have been removed. This is intended to further generalize the capabilities of DbEx; but more importantly, break the pseudo circular dependency reference between the two repositories.

  • Enhancement: Added net10.0 support and updated all related package dependencies to latest; now supports only net8.0, net9.0 and net10.0.
  • Enhancement: List of key breaking changes as follows:
    • DatabaseSchemaConfig.CreatedDate renamed to DatabaseSchemaConfig.CreatedOn.
    • DatabaseSchemaConfig.UpdatedDate renamed to DatabaseSchemaConfig.UpdatedOn.
    • MigrationArgsBase.CreatedDateColumnName renamed to MigrationArgsBase.CreatedOnColumnName.
    • MigrationArgsBase.UpdatedDateColumnName renamed to MigrationArgsBase.UpdatedOnColumnName.
    • DateTimeOffset is the preferred .NET type for date/time auditing/timestamping.
  • Enhancement: Added script suffix to discern the database-type; e.g. *.sql (SQL Server), *.pgsql (PostgreSQL) and *.mysql (MySQL), etc. This is a standard convention-based approach to enable support for multiple databases within the same project/assembly, specifically the likes of intellisense. Breaking change implications:
    • As the name suffix has changed, the existing convention-based discovery of scripts will not find any scripts until they have been renamed to include the correct suffix; e.g. MyScript.sql, MyScript.pgsql and MyScript.mysql.
    • Additionally, existing journal entries will not be found as the script name is used as the journal identifier; i.e. the existing journal entries will need to be updated to include the updated suffix.
  • Enhancement: Introduced basic code-generation (leverages OnRamp).
    • Entity Framework (EF) convention-based model and model-builder code generation added (all supported databases included).
    • Transactional Outbox and corresponding OutboxLease code-generation added (SQL Server and PostgreSQL only).
    • The existence of the code-generation configuration file dbex.yaml is required to enable.
    • Added dbex.yaml support for $schema reference; see dbex.json (JSON-schema).

The enhancements have been made in a manner to maximize backwards compatibility with previous versions of DbEx where possible; however, some breaking changes were unfortunately unavoidable (and made to improve overall).

Copilot AI review requested due to automatic review settings May 11, 2026 20:21
chullybun added 2 commits May 11, 2026 13:25
Signed-off-by: Eric Sibly [chullybun] <eric.sibly@avanade.com>
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR delivers the v3.0.0 breaking-release updates for DbEx: removes internal CoreEx dependencies, adds net10.0 support (dropping net6.0/netstandard), introduces multi-database script suffix conventions, and adds initial OnRamp-based code-generation (EF models/model-builder + Outbox artefacts).

Changes:

  • Migrated DbEx core + provider projects to net8.0/net9.0/net10.0 and replaced CoreEx.Database usage with DbEx-owned database abstractions.
  • Added convention-based code-generation (templates + generators) and tooling to emit the dbex.json JSON schema.
  • Updated tests and embedded scripts to use new script suffixes and CreatedOn/UpdatedOn + DateTimeOffset auditing conventions.

Reviewed changes

Copilot reviewed 159 out of 201 changed files in this pull request and generated 9 comments.

Show a summary per file
File Description
tools/DbEx.Tooling.Console/Program.cs Adds small console entrypoint to generate schema/docs.
tools/DbEx.Tooling.Console/generate.ps1 Convenience script to run schema generation.
tools/DbEx.Tooling.Console/DbEx.Tooling.Console.csproj New net10 tooling project referencing DbEx.
tests/DbEx.Test/PostgresMigrationTest.cs Updates Postgres tests for new exception/session-context behaviors.
tests/DbEx.Test/DbEx.Test.csproj Multitargets tests and updates package/project references.
tests/DbEx.Test/DatabaseSchemaTest.cs Adjusts schema assertions for new type mappings (DateOnly).
tests/DbEx.Test/ContextOutLogger.cs Refactors logger to primary ctor + updated ProviderAlias usage.
tests/DbEx.Test/appsettings.json Updates test connection strings (WSL defaults).
tests/DbEx.Test.PostgresConsole/Schema/spGetContact.pgsql Renames schema script to .pgsql suffix.
tests/DbEx.Test.PostgresConsole/Migrations/005-create-test-multipk-table.pgsql Renames migration script to .pgsql suffix.
tests/DbEx.Test.PostgresConsole/Migrations/004-create-test-contact-table.pgsql Renames audit columns to created_on/updated_on.
tests/DbEx.Test.PostgresConsole/Migrations/003-create-test-gender-table.pgsql Renames audit columns to created_on/updated_on.
tests/DbEx.Test.PostgresConsole/Migrations/002-create-test-contact-type-table.pgsql Renames migration script to .pgsql suffix.
tests/DbEx.Test.PostgresConsole/DbEx.Test.PostgresConsole.csproj Multitargets and embeds .pgsql resources.
tests/DbEx.Test.OutboxConsole/DbEx.Test.OutboxConsole.csproj Multitargets Outbox console test project.
tests/DbEx.Test.MySqlConsole/Schema/spGetContact.mysql Renames schema script to .mysql suffix.
tests/DbEx.Test.MySqlConsole/Migrations/005-create-test-multipk-table.mysql Renames migration script to .mysql suffix.
tests/DbEx.Test.MySqlConsole/Migrations/004-create-test-contact-table.mysql Renames audit columns to created_on/updated_on.
tests/DbEx.Test.MySqlConsole/Migrations/003-create-test-gender-table.mysql Renames audit columns + increases DATETIME precision.
tests/DbEx.Test.MySqlConsole/Migrations/002-create-test-contact-type-table.mysql Renames migration script to .mysql suffix.
tests/DbEx.Test.MySqlConsole/DbEx.Test.MySqlConsole.csproj Multitargets and embeds .mysql resources.
tests/DbEx.Test.Error/DbEx.Test.Error.csproj Multitargets error test project.
tests/DbEx.Test.Empty/Repositories/TestDbContext.g.cs Adds generated EF DbContext model builder output.
tests/DbEx.Test.Empty/Persistence/Person.g.cs Adds generated EF persistence model.
tests/DbEx.Test.Empty/Persistence/JsonConverter.cs Adds EF value converter for JSON column mapping.
tests/DbEx.Test.Empty/Persistence/Contact.g.cs Adds generated EF persistence model.
tests/DbEx.Test.Empty/Persistence/Contact.cs Adds partial type for extending generated model.
tests/DbEx.Test.Empty/Persistence/Address.cs Adds POCO used by JSON conversion sample.
tests/DbEx.Test.Empty/GlobalUsing.cs Adds global usings for EF test project.
tests/DbEx.Test.Empty/DbEx.Test.Empty.csproj Multitargets + conditional EF SqlServer package versions.
tests/DbEx.Test.Console/Schema/Stored Procedures/spOutboxLeaseRelease.g.sql Adds generated Outbox stored procedure sample.
tests/DbEx.Test.Console/Schema/Stored Procedures/spOutboxLeaseAcquire.g.sql Adds generated Outbox stored procedure sample.
tests/DbEx.Test.Console/Schema/Stored Procedures/spOutboxEnqueue.g.sql Adds generated Outbox stored procedure sample.
tests/DbEx.Test.Console/Schema/Stored Procedures/spOutboxBatchComplete.g.sql Adds generated Outbox stored procedure sample.
tests/DbEx.Test.Console/Schema/Stored Procedures/spOutboxBatchClaim.g.sql Adds generated Outbox stored procedure sample.
tests/DbEx.Test.Console/Schema/Stored Procedures/spOutboxBatchCancel.g.sql Adds generated Outbox stored procedure sample.
tests/DbEx.Test.Console/Resources/Table_sql.hb Updates auditing columns to CreatedOn/UpdatedOn + DTO.
tests/DbEx.Test.Console/Program.cs Updates test console connection string + disables Outbox assembly add.
tests/DbEx.Test.Console/Migrations/008-create-test-outbox-tables.sql Adds Outbox test schema migration.
tests/DbEx.Test.Console/Migrations/007-create-test-status-table.sql Updates audit column types/names.
tests/DbEx.Test.Console/Migrations/006-create-test-person-table.sql Updates audit column types/names.
tests/DbEx.Test.Console/Migrations/003-create-test-gender-table.sql Updates audit column types/names.
tests/DbEx.Test.Console/dbex.yaml Adds codegen configuration for EF models/outbox.
tests/DbEx.Test.Console/DbEx.Test.Console.csproj Multitargets and drops OutboxConsole reference.
tests/DbEx.Test.Console/Data/Other.sql Adjusts DateOnly literal format.
src/DbEx/Templates/EfModelBuilder_cs.hbs Adds EF model-builder generation template.
src/DbEx/Templates/EfModel_cs.hbs Adds EF model generation template.
src/DbEx/Migration/StringLogger.cs Refactors internal logger implementation.
src/DbEx/Migration/MigrationAssemblyArgs.cs Removes CoreEx dependency and refactors structure.
src/DbEx/Migration/MigrationArgs.cs Refactors args class shape post-CoreEx removal.
src/DbEx/Migration/IDatabaseJournal.cs Refactors journal interface post-CoreEx removal.
src/DbEx/Migration/IDatabase.cs Introduces DbEx-owned IDatabase abstraction.
src/DbEx/Migration/DatabaseRecord.cs Adds reader wrapper for typed access.
src/DbEx/Migration/DatabaseJournal.cs Updates journaling to suffix-aware embedded resources.
src/DbEx/Migration/DatabaseCommand.cs Adds DbEx-owned command abstraction + DTO handling.
src/DbEx/Migration/Data/IIdentifierGenerator.cs Refactors interface post-CoreEx removal.
src/DbEx/Migration/Data/GuidIdentifierGenerator.cs Refactors generator implementation.
src/DbEx/Migration/Data/DataValueConverter.cs Refactors conversion helper.
src/DbEx/Migration/Data/DataTableIdentifierType.cs Refactors enum definition.
src/DbEx/Migration/Data/DataParserTableNameMappings.cs Refactors mappings container.
src/DbEx/Migration/Data/DataParserException.cs Refactors exception type.
src/DbEx/Migration/Data/DataParserColumnDefaultCollection.cs Refactors defaults collection implementation.
src/DbEx/Migration/Data/DataParserColumnDefault.cs Refactors defaults config type.
src/DbEx/Migration/Data/DataConfig.cs Refactors data config model.
src/DbEx/Migration/Data/DataColumn.cs Refactors column model.
src/DbEx/GlobalUsing.cs Adds central global usings + InternalsVisibleTo.
src/DbEx/DbEx.csproj Drops net6/netstandard, adds net10 + package updates.
src/DbEx/Console/ParametersValidator.cs Refactors option validator post-CoreEx removal.
src/DbEx/Console/AssemblyValidator.cs Refactors option validator post-CoreEx removal.
src/DbEx/CodeGen/Generators/OutboxGenerator.cs Adds Outbox generator selector.
src/DbEx/CodeGen/Generators/EfModelGenerator.cs Adds EF model generator selector.
src/DbEx/CodeGen/Generators/EfModelBuilderGenerator.cs Adds EF model-builder generator selector.
src/DbEx/CodeGen/DbCodeGenerator.cs Adds DbEx-specific CodeGenerator wrapper for migration context.
src/DbEx/CodeGen/Config/RefDataConfig.cs Adds ref-data config helpers.
src/DbEx/CodeGen/Config/IByConventionColumns.cs Adds convention column accessor contract.
src/DbEx/CodeGen/Config/IByConventionColumnNames.cs Adds convention column-name contract.
src/DbEx/CodeGen/Config/ColumnConfig.cs Adds column-level codegen configuration model.
src/DbEx.SqlServer/Templates/SpOutboxLeaseRelease_sql.hbs Adds SQL Server outbox template: lease release.
src/DbEx.SqlServer/Templates/SpOutboxLeaseAcquire_sql.hbs Adds SQL Server outbox template: lease acquire.
src/DbEx.SqlServer/Templates/SpOutboxEnqueue_sql.hbs Adds SQL Server outbox template: enqueue.
src/DbEx.SqlServer/Templates/SpOutboxBatchComplete_sql.hbs Adds SQL Server outbox template: batch complete.
src/DbEx.SqlServer/Templates/SpOutboxBatchClaim_sql.hbs Adds SQL Server outbox template: batch claim.
src/DbEx.SqlServer/Templates/spOutboxBatchCancel_sql.hbs Adds SQL Server outbox template: batch cancel.
src/DbEx.SqlServer/Scripts/Database.yaml Adds OnRamp generator bindings for SQL Server.
src/DbEx.SqlServer/Resources/ScriptSchema_sql.hbs Updates SQL Server schema script template.
src/DbEx.SqlServer/Resources/ScriptRefData_sql.hbs Updates SQL Server ref-data template for audit column changes.
src/DbEx.SqlServer/Resources/ScriptOutbox_sql.hbs Adds SQL Server outbox table script template.
src/DbEx.SqlServer/Resources/ScriptCreate_sql.hbs Updates SQL Server create-table template for audit column changes.
src/DbEx.SqlServer/Resources/ExtendedSchema/Stored Procedures/spThrowValidationException.sql Fixes header link text.
src/DbEx.SqlServer/Resources/ExtendedSchema/Stored Procedures/spThrowNotFoundException.sql Fixes header link text.
src/DbEx.SqlServer/Resources/ExtendedSchema/Stored Procedures/spThrowDuplicateException.sql Fixes header link text.
src/DbEx.SqlServer/Resources/ExtendedSchema/Stored Procedures/spThrowConflictException.sql Fixes header link text.
src/DbEx.SqlServer/Resources/ExtendedSchema/Stored Procedures/spThrowConcurrencyException.sql Fixes header link text.
src/DbEx.SqlServer/Resources/ExtendedSchema/Stored Procedures/spThrowBusinessException.sql Fixes header link text.
src/DbEx.SqlServer/Resources/ExtendedSchema/Stored Procedures/spSetSessionContext.sql Updates timestamp type to DATETIMEOFFSET + null casing.
src/DbEx.SqlServer/Resources/ExtendedSchema/Functions/fnGetUsername.sql Fixes header link text + null casing.
src/DbEx.SqlServer/Resources/ExtendedSchema/Functions/fnGetUserId.sql Fixes header link text + null casing.
src/DbEx.SqlServer/Resources/ExtendedSchema/Functions/fnGetTimestamp.sql Updates return/type to DATETIMEOFFSET + SYSDATETIMEOFFSET.
src/DbEx.SqlServer/Resources/ExtendedSchema/Functions/fnGetTenantId.sql Fixes header link text + null casing.
src/DbEx.SqlServer/Migration/SqlServerDatabase.cs Adds SQL Server IDatabase implementation wrapper.
src/DbEx.SqlServer/GlobalUsing.cs Adds SQL Server global usings for new structure.
src/DbEx.SqlServer/DbEx.SqlServer.csproj Drops net6/netstandard, adds net10 + package updates.
src/DbEx.SqlServer/Console/SqlServerMigrationConsole.cs Refactors console wrapper + adds outbox help entry.
src/DbEx.SqlServer/Console/MigrationArgsExtensions.cs Refactors extension methods for extended schema scripts.
src/DbEx.Postgres/Templates/FnOutboxLeaseRelease_pgsql.hbs Adds Postgres outbox template: lease release function.
src/DbEx.Postgres/Templates/FnOutboxLeaseAcquire_pgsql.hbs Adds Postgres outbox template: lease acquire function.
src/DbEx.Postgres/Templates/FnOutboxEnqueue_pgsql.hbs Adds Postgres outbox template: enqueue function.
src/DbEx.Postgres/Templates/FnOutboxBatchComplete_pgsql.hbs Adds Postgres outbox template: batch complete function.
src/DbEx.Postgres/Templates/FnOutboxBatchClaim_pgsql.hbs Adds Postgres outbox template: batch claim function.
src/DbEx.Postgres/Templates/FnOutboxBatchCancel_pgsql.hbs Adds Postgres outbox template: batch cancel function.
src/DbEx.Postgres/Scripts/Database.yaml Adds OnRamp generator bindings for Postgres.
src/DbEx.Postgres/Resources/SelectTablePrimaryKey.pgsql Adds suffix-specific schema discovery query.
src/DbEx.Postgres/Resources/SelectTableForeignKeys.pgsql Adds suffix-specific FK discovery query.
src/DbEx.Postgres/Resources/SelectTableAndColumns.pgsql Adds suffix-specific table/column discovery query.
src/DbEx.Postgres/Resources/ScriptSchema_pgsql.hbs Adds Postgres schema script template.
src/DbEx.Postgres/Resources/ScriptRefData_pgsql.hbs Updates ref-data template for audit column changes.
src/DbEx.Postgres/Resources/ScriptOutbox_pgsql.hbs Adds Postgres outbox table script template.
src/DbEx.Postgres/Resources/ScriptDefault_pgsql.hbs Adds default Postgres migration script template.
src/DbEx.Postgres/Resources/ScriptCreate_pgsql.hbs Updates create-table template for audit column changes.
src/DbEx.Postgres/Resources/ScriptAlter_pgsql.hbs Updates alter-table template casing.
src/DbEx.Postgres/Resources/JournalPrevious.pgsql Adds Postgres journal query.
src/DbEx.Postgres/Resources/JournalExists.pgsql Adds Postgres journal existence query.
src/DbEx.Postgres/Resources/JournalCreate.pgsql Adds Postgres journal create script.
src/DbEx.Postgres/Resources/JournalAudit.pgsql Adds Postgres journal audit script.
src/DbEx.Postgres/Resources/ExtendedSchema/Stored Procedures/sp_throw_validation_exception.pgsql Adds Postgres extended schema proc.
src/DbEx.Postgres/Resources/ExtendedSchema/Stored Procedures/sp_throw_not_found_exception.pgsql Adds Postgres extended schema proc.
src/DbEx.Postgres/Resources/ExtendedSchema/Stored Procedures/sp_throw_duplicate_exception.pgsql Adds Postgres extended schema proc.
src/DbEx.Postgres/Resources/ExtendedSchema/Stored Procedures/sp_throw_conflict_exception.pgsql Adds Postgres extended schema proc.
src/DbEx.Postgres/Resources/ExtendedSchema/Stored Procedures/sp_throw_concurrency_exception.pgsql Adds Postgres extended schema proc.
src/DbEx.Postgres/Resources/ExtendedSchema/Stored Procedures/sp_throw_business_exception.pgsql Adds Postgres extended schema proc.
src/DbEx.Postgres/Resources/ExtendedSchema/Stored Procedures/sp_throw_authorization_exception.pgsql Adds Postgres extended schema proc.
src/DbEx.Postgres/Resources/ExtendedSchema/Stored Procedures/sp_set_session_context.pgsql Adds Postgres session context proc.
src/DbEx.Postgres/Resources/ExtendedSchema/Functions/fn_get_username.pgsql Fixes header link text.
src/DbEx.Postgres/Resources/ExtendedSchema/Functions/fn_get_user_id.pgsql Fixes header link text.
src/DbEx.Postgres/Resources/ExtendedSchema/Functions/fn_get_timestamp.pgsql Fixes header link text.
src/DbEx.Postgres/Resources/ExtendedSchema/Functions/fn_get_tenant_id.pgsql Fixes header link text.
src/DbEx.Postgres/Resources/DatabaseReset_pgsql.hbs Adds Postgres reset template.
src/DbEx.Postgres/Resources/DatabaseExists.pgsql Adds Postgres DB existence query.
src/DbEx.Postgres/Resources/DatabaseDrop.pgsql Adds Postgres DB drop script.
src/DbEx.Postgres/Resources/DatabaseData_pgsql.hbs Adds Postgres data-load template.
src/DbEx.Postgres/Resources/DatabaseCreate.pgsql Adds Postgres DB create script.
src/DbEx.Postgres/Migration/PostgresMigration.cs Refactors Postgres migration orchestration off CoreEx.
src/DbEx.Postgres/Migration/PostgresDatabase.cs Adds Postgres IDatabase implementation wrapper.
src/DbEx.Postgres/GlobalUsing.cs Adds Postgres global usings for new structure.
src/DbEx.Postgres/DbEx.Postgres.csproj Drops net6, adds net10 + package updates.
src/DbEx.Postgres/Console/PostgresMigrationConsole.cs Refactors console wrapper + adds outbox help entry.
src/DbEx.Postgres/Console/MigrationArgsExtensions.cs Refactors extension methods for extended schema scripts.
src/DbEx.MySql/Resources/SelectTablePrimaryKey.mysql Adds suffix-specific schema discovery query.
src/DbEx.MySql/Resources/SelectTableForeignKeys.mysql Adds suffix-specific FK discovery query.
src/DbEx.MySql/Resources/SelectTableAndColumns.mysql Adds suffix-specific table/column discovery query.
src/DbEx.MySql/Resources/ScriptRefData_mysql.hbs Updates ref-data template for audit column changes.
src/DbEx.MySql/Resources/ScriptDefault_mysql.hbs Adds default MySQL migration script template.
src/DbEx.MySql/Resources/ScriptCreate_mysql.hbs Updates create-table template for audit column changes.
src/DbEx.MySql/Resources/ScriptAlter_mysql.hbs Adds MySQL alter-table template.
src/DbEx.MySql/Resources/JournalPrevious.mysql Adds MySQL journal query.
src/DbEx.MySql/Resources/JournalExists.mysql Adds MySQL journal existence query.
src/DbEx.MySql/Resources/JournalCreate.mysql Adds MySQL journal create script.
src/DbEx.MySql/Resources/JournalAudit.mysql Adds MySQL journal audit script.
src/DbEx.MySql/Resources/DatabaseReset_mysql.hbs Adds MySQL reset template.
src/DbEx.MySql/Resources/DatabaseExists.mysql Adds MySQL DB existence query.
src/DbEx.MySql/Resources/DatabaseDrop.mysql Adds MySQL DB drop script.
src/DbEx.MySql/Resources/DatabaseData_mysql.hbs Adds MySQL data-load template.
src/DbEx.MySql/Resources/DatabaseCreate.mysql Adds MySQL DB create script.
src/DbEx.MySql/Migration/MySqlSchemaScript.cs Refactors schema script parsing after CoreEx removal.
src/DbEx.MySql/Migration/MySqlDatabase.cs Adds MySQL IDatabase implementation wrapper.
src/DbEx.MySql/GlobalUsing.cs Adds MySQL global usings for new structure.
src/DbEx.MySql/DbEx.MySql.csproj Drops net6, adds net10 + package updates.
src/DbEx.MySql/Console/MySqlMigrationConsole.cs Refactors console wrapper post-CoreEx removal.
docker-compose.yml Adds local DB containers for SQL Server/MySQL/Postgres.
Common.targets Bumps version to 3.0.0.
CHANGELOG.md Adds v3.0.0 release notes + minor wording fix.
.github/workflows/CI.yml Updates CI to test against .NET 10 SDK.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread src/DbEx/Templates/EfModelBuilder_cs.hbs
Comment thread tests/DbEx.Test.Empty/Persistence/JsonConverter.cs
Comment thread src/DbEx.Postgres/Migration/PostgresMigration.cs
Comment thread src/DbEx.Postgres/Migration/PostgresMigration.cs
Comment thread src/DbEx.SqlServer/Templates/SpOutboxLeaseAcquire_sql.hbs
Comment thread src/DbEx.SqlServer/Templates/SpOutboxLeaseRelease_sql.hbs
Comment thread src/DbEx.Postgres/Templates/FnOutboxLeaseAcquire_pgsql.hbs
Comment on lines +19 to +23
* Notes:
* - The function is resilient to transient errors and will return -1 where release is unsuccessful, including where the lease is already released or where a transient error occurs (e.g. lock timeout).
*/

-- Set transaction parameters
Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Manually corrected.

Comment thread tests/DbEx.Test/PostgresMigrationTest.cs Outdated
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 159 out of 201 changed files in this pull request and generated 18 comments.

Comment on lines 24 to +29

_databaseName = csb.Database;
_database = new PostgresDatabase(() => new NpgsqlConnection(Args.ConnectionString));
_databaseName = csb.Database;
_database = new PostgresDatabase(() => NpgsqlDataSource.Create(Args.ConnectionString!).CreateConnection());

csb.Database = null;
_masterDatabase = new PostgresDatabase(() => new NpgsqlConnection(csb.ConnectionString));
csb.Database = null;
_masterDatabase = new PostgresDatabase(() => new NpgsqlConnection(csb.ConnectionString));
Comment on lines +18 to +22
public MigrationAssemblyArgs(Assembly assembly, params string[] dataNamespaces)
{
Assembly = assembly.ThrowIfNull(nameof(Assembly));
DataNamespaces = dataNamespaces is null || dataNamespaces.Length == 0 ? [DefaultDataNamespace] : dataNamespaces;
}
Comment on lines +34 to +36
/// <summary>
/// Adds or overriddes the parameter.
/// </summary>
Comment on lines +18 to +22
* Notes:
* - The procedure will return -1 where lease acquisition is unsuccessful, including where another active lease exists or where a transient error occurs (e.g. lock timeout).
* - The caller should implement an appropriate retry/backoff strategy where -1 is returned, including randomization to avoid thundering herd issues.
*/

Comment on lines +14 to +16
* Notes:
* - The procedure will return -1 where release is unsuccessful, including where the lease is already released or where a transient error occurs (e.g. lock timeout).
*/
Comment on lines +6 to +9
[OutboxId] BIGINT IDENTITY (1, 1) NOT NULL PRIMARY KEY,
[TenantId] NVARCHAR(255) NOT NULL, -- Optional, null indicates no tenancy.
[PartitionId] INT NOT NULL, -- Partition number; computed in application from partition-key.
[Status] TINYINT NOT NULL DEFAULT 0, -- 0=Pending, 1=Processing, 2=Done.
Comment on lines +3 to +9
// Assumes running in WSL ...
"NoneDb": "Data Source=127.0.0.1,1433;Initial Catalog=DbEx.None;User id=sa;Password=yourStrong(!)Password;TrustServerCertificate=true",
"EmptyDb": "Data Source=127.0.0.1,1433;Initial Catalog=DbEx.Empty;User id=sa;Password=yourStrong(!)Password;TrustServerCertificate=true",
"ErrorDb": "Data Source=127.0.0.1,1433;Initial Catalog=DbEx.Error;User id=sa;Password=yourStrong(!)Password;TrustServerCertificate=true",
"ConsoleDb": "Data Source=127.0.0.1,1433;Initial Catalog=DbEx.Console;User id=sa;Password=yourStrong(!)Password;TrustServerCertificate=true",
"MySqlDb": "Server=127.0.0.1; Port=3306; Database=dbex_test; Uid=root; Pwd=yourStrong#!Password;",
"PostgresDb": "Server=127.0.0.1;Port=5432;Database=dbex_test;Username=postgres;Password=yourStrong#!Password;Pooling=false"
Comment on lines 8 to 13
internal static Task<int> Main(string[] args) => SqlServerMigrationConsole
.Create<Program>("Data Source=.;Initial Catalog=DbEx.Console;Integrated Security=True;TrustServerCertificate=true")
.Create<Program>("Data Source=127.0.0.1,1433;Initial Catalog=DbEx.Console;User id=sa;Password=yourStrong(!)Password;TrustServerCertificate=true")
.Configure(c =>
{
c.Args.AddAssembly<DbEx.Test.OutboxConsole.Program>("Data", "Data2");
//c.Args.AddAssembly<DbEx.Test.OutboxConsole.Program>("Data", "Data2");
c.Args.AddSchemaOrder("Test", "Outbox");
Comment thread docker-compose.yml
Comment on lines +7 to +22
SA_PASSWORD: "yourStrong(!)Password"
ACCEPT_EULA: "Y"
ports:
- "1433:1433"

db-mysql:
image: mysql
environment:
MYSQL_ROOT_PASSWORD: "yourStrong#!Password"
ports:
- "3306:3306"

db-postgres:
image: postgres
environment:
POSTGRES_PASSWORD: "yourStrong#!Password"
Comment on lines 8 to +10
<ItemGroup>
<PackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="8.0.0" />
<PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="8.0.1" />
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="8.0.1" />
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="8.0.1" />
<Compile Remove="SqlServerOutboxTest.cs" />
</ItemGroup>
@chullybun chullybun merged commit 1c39971 into main May 11, 2026
3 of 4 checks passed
@chullybun chullybun deleted the v3.0.0 branch May 11, 2026 22:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants