Releases: doka-labs/Doka.EntityFrameworkCore.MySql
Release list
Doka.EntityFrameworkCore.MySql 10.3.0
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.0Added
- Add
MySqlMigrationOperationMetadata,
GetMySqlMigrationMetadata(), and
MySqlMigrationOperationContext.Metadataso 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
Guidvalues in generatedHasDatasnapshots and
migration designers for bothChar36andBinary16, 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
Guidliterals when a model contains only convertedChar36properties.
The same contract applies recursively to scalar properties in non-collection
complex types; application-owned complex-property converters remain unchanged. - Preserve provider-owned
Guidand 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
JsonArrayvalues, plus explicitly suppliedbyte[]row-version values, in
generatedHasDatasnapshots 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'sMySqlGeometrytransport 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
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.0Added
- Add
RequireUserVariables()so libraries and applications can require
session-local MySQL or MariaDB user variables through provider configuration.
Doka enables an omittedAllowUserVariablesoption 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
rejectUseAffectedRows=truebefore database I/O so semantically unchanged
updates cannot become false optimistic-concurrency conflicts. - Use
GuidFormat=Binary16as the single MySqlConnector wire-transport
invariant while keeping Doka'sDefaultGuidFormat(...)and
HasMySqlGuidFormat(...)APIs authoritative forbinary(16)andchar(36)
column storage. Caller-owned connections and data sources must declare the
compatible connector setting and are rejected without mutation otherwise. - Keep explicit
Binary16properties on the nativeGuidparameter and
materialization path even when the model default isChar36, removing the
former per-valuebyte[]conversion.
Doka.EntityFrameworkCore.MySql 10.1.2
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.2Changed
- Add an observational BenchmarkDotNet workload for
JsonElementconversion
across 256-byte, 4-KiB, and 64-KiB payloads without introducing an
uncalibrated regression threshold.
Fixed
- Return independently owned
JsonElementvalues from provider conversion
instead of retaining a disposableJsonDocumentowner that the conversion
boundary cannot release.
Doka.EntityFrameworkCore.MySql 10.1.1
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.1Fixed
- Preserve provider-owned
Char36andBinary16GUID 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 unknownbinary(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.0package
baselines duringdotnet pack.
Doka.EntityFrameworkCore.MySql 10.1.1-rc.2
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.2Fixed
- Keep provider-owned
Char36andBinary16migration operations typed as
GuidacrossCreateTable,AddColumn, and both sides ofAlterColumn,
including an explicitBinary16property under aChar36default. - Restore provider-side text and big-endian byte defaults to their
Guidmodel
values before C# migration generation. Reject invalid provider types,
malformed text, and binary values whose width is not exactly 16 bytes. - Continue emitting
stringmigration operations for application-owned GUID
converters so the correction does not claim consumer conversion metadata. - Reject direct
Char36/Binary16storage changes and one-sided
application/provider changes that cross text and binary representations.
Application-ownedbinary(16)is also rejected against nativeBinary16
because the SQL type does not prove byte order. Canonical application-owned
char(36)orvarchar(36)remains text-equivalent to nativeChar36. - 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
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.1Changed
- Validate all three packages against their published 10.1.0 package baselines
duringdotnet pack.
Fixed
- Keep provider-owned
Char36properties asGuidorGuid?throughout
relationship finalization while leaving the relational type mapping solely
responsible for converting values tochar(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 producingAlterColumn<string>(...)and unintended
varchar(36)schema drift.
Doka.EntityFrameworkCore.MySql 10.1.0
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.0Changed
- 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 duringdotnet 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
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.2Fixed
- Forward a DI-registered
TimeProvidertoDoka.Caching.MySqlso 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
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.1The 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 asGuid.ToString(); normal string overload binding and
SQL null semantics remain unchanged. - Add the standalone .NET 10
Doka.Caching.MySqlpackage with one singleton
implementingIDistributedCacheandIBufferDistributedCache, 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 effectiveBinary16orChar36
mapping. Preserve the GUID converter for text-mapped constants, parameters,
and server-generatedGuid.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
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.0Changed
- 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.0package line as stable after public RC.13
consumption completed without provider findings.