Skip to content

Releases: doka-labs/Doka.EntityFrameworkCore.MySql

Doka.EntityFrameworkCore.MySql 10.3.0

Choose a tag to compare

@github-actions github-actions released this 01 Sep 04:47
Immutable release. Only release title and notes can be modified.
v10.3.0
1217d08

Stable minor release preserving provider-owned migration metadata from model
construction through generated snapshots, migration designers, migration
operations, SQL, and live schemas. It adds an immutable public metadata
projection for custom migration handlers and closes index-fidelity gaps across
TPH, TPT, and TPC inheritance mappings.

Install the stable packages through normal NuGet version resolution. Add the
spatial and cache packages only when needed:

dotnet package add Doka.EntityFrameworkCore.MySql --version 10.3.0
dotnet package add Doka.EntityFrameworkCore.MySql.NetTopologySuite --version 10.3.0
dotnet package add Doka.Caching.MySql --version 10.3.0

Added

  • Add MySqlMigrationOperationMetadata,
    GetMySqlMigrationMetadata(), and
    MySqlMigrationOperationContext.Metadata so external migration handlers can
    read GUID storage, value-generation, and ordered index-prefix semantics
    without depending on private annotation names or mutable arrays.

Fixed

  • Bind release qualification to the pull-request merge-ref tree GitHub Actions
    actually tested instead of the raw pull-request head tree. The protected
    aggregator now records that tree in attempt-qualified artifact metadata, and
    candidate assembly plus publication freeze and revalidate its exact artifact
    identity. Release-candidate preflight now performs that trust check before
    the expensive gates start, so an invalid import fails early rather than only
    after qualification has completed. Workflow runs created before this policy
    remain intentionally ineligible; the pull request carrying this change is
    the bootstrap qualification.
  • Preserve provider-owned Guid values in generated HasData snapshots and
    migration designers for both Char36 and Binary16, including nullable
    values and seeded relationships, while retaining EF Core's provider-shaped
    executable data operations and output for application-owned converters.
    Generated artifacts also import the model namespace required by restored
    Guid literals when a model contains only converted Char36 properties.
    The same contract applies recursively to scalar properties in non-collection
    complex types; application-owned complex-property converters remain unchanged.
  • Preserve provider-owned Guid and native JSON literal defaults as model-side
    values in generated snapshots and migration designers. GUID coverage includes
    Char36, Binary16, nullable, and empty values; application-owned converters
    retain their provider-side default representation.
  • Preserve JsonElement, JsonDocument, JsonNode, JsonObject, and
    JsonArray values, plus explicitly supplied byte[] row-version values, in
    generated HasData snapshots and migration designers. Executable migration
    data operations continue to carry the JSON strings expected by the provider
    conversion boundary and omit store-generated row-version columns.
  • Preserve NetTopologySuite geometry model types and seeded values through
    snapshots, migration designers, column operations, and generated migration
    code instead of leaking MySqlConnector's MySqlGeometry transport type.
  • Preserve NetTopologySuite X/Y coordinate order for geographic spatial
    literals on MySQL by selecting longitude-latitude constructor semantics.
    MariaDB retains its supported two-argument constructor form.
  • Reject ordinary, unique, and key definitions whose known composite byte
    width exceeds InnoDB's 3072-byte maximum. Explicit prefix lengths remain
    authoritative; Doka never invents a prefix that would change index or
    uniqueness semantics.
  • Reject migration commands when MySQL or MariaDB reports server code 1071
    after accepting DDL with a shortened index key. The migration history entry
    is not recorded, including for historical or hand-authored operations that
    did not pass the current model validator.
  • Rebuild an existing index when HasPrefixLength(...) is added, removed, or
    changed, or when an ordinary index becomes full-text or spatial and back.
    The rebuild also survives simultaneous table or index renames, while a pure
    rename with unchanged provider metadata retains EF Core's native rename
    operation. Migration operations and generated SQL retain the target model's
    physical index semantics across TPH, TPT, and TPC inheritance mappings,
    including each physical TPC index copy.

Doka.EntityFrameworkCore.MySql 10.2.0

Choose a tag to compare

@github-actions github-actions released this 30 Aug 22:47
Immutable release. Only release title and notes can be modified.
v10.2.0
18ae328

Stable minor release establishing ownership-aware connection invariants for
provider-owned strings, caller-owned connections, and caller-owned data
sources. It preserves Char36 and Binary16 column storage while unifying the
MySqlConnector wire transport and enforcing EF-compatible matched-row
semantics.

Install the stable packages through normal NuGet version resolution. Add the
spatial and cache packages only when needed:

dotnet package add Doka.EntityFrameworkCore.MySql --version 10.2.0
dotnet package add Doka.EntityFrameworkCore.MySql.NetTopologySuite --version 10.2.0
dotnet package add Doka.Caching.MySql --version 10.2.0

Added

  • Add RequireUserVariables() so libraries and applications can require
    session-local MySQL or MariaDB user variables through provider configuration.
    Doka enables an omitted AllowUserVariables option for provider-owned
    strings and validates caller-owned connections and data sources without
    rebuilding them.

Changed

  • Require MySqlConnector matched-row semantics on every connection path and
    reject UseAffectedRows=true before database I/O so semantically unchanged
    updates cannot become false optimistic-concurrency conflicts.
  • Use GuidFormat=Binary16 as the single MySqlConnector wire-transport
    invariant while keeping Doka's DefaultGuidFormat(...) and
    HasMySqlGuidFormat(...) APIs authoritative for binary(16) and char(36)
    column storage. Caller-owned connections and data sources must declare the
    compatible connector setting and are rejected without mutation otherwise.
  • Keep explicit Binary16 properties on the native Guid parameter and
    materialization path even when the model default is Char36, removing the
    former per-value byte[] conversion.

Doka.EntityFrameworkCore.MySql 10.1.2

Choose a tag to compare

@github-actions github-actions released this 29 Aug 20:59
Immutable release. Only release title and notes can be modified.
v10.1.2
8144e57

Stable patch release correcting resource ownership during JsonElement
materialization. It does not change public API, generated SQL, database
behavior, supported-engine policy, or package dependency ranges.

Install the stable packages through normal NuGet version resolution. Add the
spatial and cache packages only when needed:

dotnet package add Doka.EntityFrameworkCore.MySql --version 10.1.2
dotnet package add Doka.EntityFrameworkCore.MySql.NetTopologySuite --version 10.1.2
dotnet package add Doka.Caching.MySql --version 10.1.2

Changed

  • Add an observational BenchmarkDotNet workload for JsonElement conversion
    across 256-byte, 4-KiB, and 64-KiB payloads without introducing an
    uncalibrated regression threshold.

Fixed

  • Return independently owned JsonElement values from provider conversion
    instead of retaining a disposable JsonDocument owner that the conversion
    boundary cannot release.

Doka.EntityFrameworkCore.MySql 10.1.1

Choose a tag to compare

@github-actions github-actions released this 29 Aug 08:55
Immutable release. Only release title and notes can be modified.
v10.1.1
3a4fc58

Stable patch release containing all corrections from 10.1.1-rc.1 and
10.1.1-rc.2. It promotes the verified final candidate without changing
runtime behavior, generated SQL, public API, supported-engine policy, or
package dependency ranges.

Install the stable packages through normal NuGet version resolution. Add the
spatial and cache packages only when needed:

dotnet package add Doka.EntityFrameworkCore.MySql --version 10.1.1
dotnet package add Doka.EntityFrameworkCore.MySql.NetTopologySuite --version 10.1.1
dotnet package add Doka.Caching.MySql --version 10.1.1

Fixed

  • Preserve provider-owned Char36 and Binary16 GUID model types through
    relationship finalization, snapshots, designers, migration operations, and
    generated C# while leaving application-owned converters authoritative.
  • Reject unsafe or unproven text/binary GUID representation changes that need
    an explicit staged data migration, including unknown binary(16) byte order.
  • Reject synthesized required-column defaults when the target model declares
    no default so deployments require an explicit, reviewable backfill.
  • Preserve provider-owned JSON DOM and row-version model types throughout the
    design-time and migration pipelines.
  • Validate all three packages against their published 10.1.0 package
    baselines during dotnet pack.

Doka.EntityFrameworkCore.MySql 10.1.1-rc.2

Choose a tag to compare

@github-actions github-actions released this 29 Aug 04:07
Immutable release. Only release title and notes can be modified.
v10.1.1-rc.2
c5d2c3f

Second release candidate for the 10.1.1 patch release. It completes the
provider-owned conversion correction after published-package validation of
rc.1 found that migration operations still used relational provider types.

Install the candidate explicitly to validate the complete correction against
the published packages. Add the spatial and cache packages only when needed:

dotnet package add Doka.EntityFrameworkCore.MySql --version 10.1.1-rc.2
dotnet package add Doka.EntityFrameworkCore.MySql.NetTopologySuite --version 10.1.1-rc.2
dotnet package add Doka.Caching.MySql --version 10.1.1-rc.2

Fixed

  • Keep provider-owned Char36 and Binary16 migration operations typed as
    Guid across CreateTable, AddColumn, and both sides of AlterColumn,
    including an explicit Binary16 property under a Char36 default.
  • Restore provider-side text and big-endian byte defaults to their Guid model
    values before C# migration generation. Reject invalid provider types,
    malformed text, and binary values whose width is not exactly 16 bytes.
  • Continue emitting string migration operations for application-owned GUID
    converters so the correction does not claim consumer conversion metadata.
  • Reject direct Char36/Binary16 storage changes and one-sided
    application/provider changes that cross text and binary representations.
    Application-owned binary(16) is also rejected against native Binary16
    because the SQL type does not prove byte order. Canonical application-owned
    char(36) or varchar(36) remains text-equivalent to native Char36.
  • Remove CLR defaults synthesized by EF Core for scaffolded required columns
    when the target model declares no default, and require an explicit backfill
    before SQL generation. Initial tables and server-generated columns retain
    their normal behavior.
  • Preserve JSON DOM and row-version model CLR types through snapshots,
    designers, and generated migration operations while leaving
    application-owned converters unchanged.

Doka.EntityFrameworkCore.MySql 10.1.1-rc.1

Choose a tag to compare

@github-actions github-actions released this 28 Aug 19:27
Immutable release. Only release title and notes can be modified.
v10.1.1-rc.1
002eaef

First release candidate for the 10.1.1 patch release. It corrects
provider-owned Char36 conversion metadata discovered while validating a
relationship-heavy consumer model against the published 10.1.0 packages.

Install the candidate explicitly to test the published packages rather than
project references. Add the spatial and cache packages only when needed:

dotnet package add Doka.EntityFrameworkCore.MySql --version 10.1.1-rc.1
dotnet package add Doka.EntityFrameworkCore.MySql.NetTopologySuite --version 10.1.1-rc.1
dotnet package add Doka.Caching.MySql --version 10.1.1-rc.1

Changed

  • Validate all three packages against their published 10.1.0 package baselines
    during dotnet pack.

Fixed

  • Keep provider-owned Char36 properties as Guid or Guid? throughout
    relationship finalization while leaving the relational type mapping solely
    responsible for converting values to char(36).
  • Preserve application-owned value converters and provider CLR types before
    applying provider GUID metadata so compatible relationship chains remain
    valid and genuinely conflicting application conversions still fail closed.
  • Preserve GUID model types through designers, snapshots, and migration
    round-trips instead of producing AlterColumn<string>(...) and unintended
    varchar(36) schema drift.

Doka.EntityFrameworkCore.MySql 10.1.0

Choose a tag to compare

@github-actions github-actions released this 27 Aug 08:14
Immutable release. Only release title and notes can be modified.
v10.1.0
01450ee

First stable release of the 10.1 package line. It contains all changes from
10.1.0-rc.1 and 10.1.0-rc.2 and promotes the final release candidate
without changing runtime behavior, generated SQL, supported-engine policy, or
package dependency ranges.

Install the stable packages through normal NuGet version resolution. Add the
spatial and cache packages only when needed:

dotnet package add Doka.EntityFrameworkCore.MySql --version 10.1.0
dotnet package add Doka.EntityFrameworkCore.MySql.NetTopologySuite --version 10.1.0
dotnet package add Doka.Caching.MySql --version 10.1.0

Changed

  • Promote the 10.1 provider additions and the initial cache public API from
    prerelease working baselines to immutable shipped baselines.
  • Validate the provider and NetTopologySuite packages against their published
    10.0.0 package baselines during dotnet pack.
  • Publish the stable 10.1 package line after public rc.2 consumer verification
    confirmed the distributed-cache cleanup correction.

Doka.EntityFrameworkCore.MySql 10.1.0-rc.2

Choose a tag to compare

@github-actions github-actions released this 27 Aug 05:08
Immutable release. Only release title and notes can be modified.
v10.1.0-rc.2
1513258

Second release candidate for 10.1.0, correcting distributed-cache cleanup
configuration and execution discovered during consumer verification of rc.1.

Install the candidate explicitly to test the published packages rather than
project references. Add the spatial and cache packages only when needed:

dotnet package add Doka.EntityFrameworkCore.MySql --version 10.1.0-rc.2
dotnet package add Doka.EntityFrameworkCore.MySql.NetTopologySuite --version 10.1.0-rc.2
dotnet package add Doka.Caching.MySql --version 10.1.0-rc.2

Fixed

  • Forward a DI-registered TimeProvider to Doka.Caching.MySql so consumers
    can deterministically exercise the bounded cleanup cadence. Continue using
    system time when no provider is registered; cache-entry expiration remains
    based on database UTC.
  • Fully qualify bounded cleanup deletion so it remains operational when the
    connection string does not select a default database.

Doka.EntityFrameworkCore.MySql 10.1.0-rc.1

Choose a tag to compare

@github-actions github-actions released this 26 Aug 19:25
Immutable release. Only release title and notes can be modified.
v10.1.0-rc.1
5eeb832

First release candidate for 10.1.0, adding connection-string server discovery,
generic scalar LIKE, and the standalone MySQL distributed cache. The minor
version reflects additive Doka features; the supported .NET, EF Core,
MySqlConnector, and database release lines remain unchanged.

Install the candidate explicitly to test the published packages rather than
project references. Add the spatial and cache packages only when needed:

dotnet package add Doka.EntityFrameworkCore.MySql --version 10.1.0-rc.1
dotnet package add Doka.EntityFrameworkCore.MySql.NetTopologySuite --version 10.1.0-rc.1
dotnet package add Doka.Caching.MySql --version 10.1.0-rc.1

The cache can be installed independently of the EF Core provider. This is a
prerelease for consumer validation, not a stable release. New public API
declarations remain in PublicAPI.Unshipped.txt until stable preparation.

Added

  • Add MySqlServerVersion.AutoDetect(string) for connection-string-only
    configuration, with one internally owned synchronous connection and the
    existing supported-engine policy. Keep discovery outside ambient transactions.
  • Add generic EF.Functions.Like<T> overloads for native numeric types,
    DateTime, Guid, and nullable values. Binary GUIDs use the same canonical
    text translation as Guid.ToString(); normal string overload binding and
    SQL null semantics remain unchanged.
  • Add the standalone .NET 10 Doka.Caching.MySql package with one singleton
    implementing IDistributedCache and IBufferDistributedCache, explicit
    versioned schema deployment, database-UTC expiration, atomic writes, and
    bounded, primary-key-first expired-row cleanup with renewal-safe deletion
    and candidate-based backlog continuation. Accept an optional
    caller-owned MySqlConnector data source for shared pools and driver-managed
    authentication. The cache does not require EF Core.
  • Document the observed Pomelo migration paths, including configuration,
    GUID storage, generated migration metadata, designers, snapshots, queries,
    and cold-cache table replacement.
  • Guard parallel sliding-cache reads with a same-run timing ratio and
    engine-specific budgets alongside the existing allocation limit. Document
    separate-table rollout and rollback for future incompatible cache schemas.
  • Include the standalone cache in package validation, dependency auditing,
    SBOM generation, provenance, and isolated local-package and NuGet readback.
    Execute its ordinary, fully trimmed, and NativeAOT runtime checks as part of
    the existing release-qualification path.

Fixed

  • Format Guid.ToString() according to the effective Binary16 or Char36
    mapping. Preserve the GUID converter for text-mapped constants, parameters,
    and server-generated Guid.NewGuid() values; reject unsupported GUID text
    conversions instead of silently generating incorrect values.
  • Wait for process readiness in deadline signal tests before exercising
    termination forwarding and forced cleanup.

Doka.EntityFrameworkCore.MySql 10.0.0

Choose a tag to compare

@github-actions github-actions released this 24 Aug 11:39
Immutable release. Only release title and notes can be modified.
v10.0.0
b40375b

First stable release of Doka.EntityFrameworkCore.MySql for Entity Framework
Core 10. This release contains all changes documented from 10.0.0-rc.1
through 10.0.0-rc.13 and promotes the final release candidate without
changing provider runtime behavior, public API shape, generated SQL, supported
engine policy, or package dependency ranges.

Install the stable packages through normal NuGet version resolution:

dotnet add package Doka.EntityFrameworkCore.MySql --version 10.0.0
dotnet add package Doka.EntityFrameworkCore.MySql.NetTopologySuite --version 10.0.0

Changed

  • Promote the complete initial provider and NetTopologySuite public API
    surfaces from the prerelease working baseline to the immutable shipped
    baseline.
  • Publish the qualified 10.0.0 package line as stable after public RC.13
    consumption completed without provider findings.