Skip to content

🐞fix: Output mapping of updated entities on merge - #26

Open
filipklaric wants to merge 2 commits into
lukaferlez:masterfrom
filipklaric:fix/merge-output-map-updated-entities
Open

🐞fix: Output mapping of updated entities on merge#26
filipklaric wants to merge 2 commits into
lukaferlez:masterfrom
filipklaric:fix/merge-output-map-updated-entities

Conversation

@filipklaric

Copy link
Copy Markdown
Contributor

Updated rows returned by MERGE were matched back onto entities by primary key, so merging on any other columns left the generated key unmapped, as the entity has no key to match on yet. Match updated rows on the columns the merge was performed on instead, which is sound because a row comes back as an update precisely when it matched the entity on those columns.

Matched entities that are already in sync produce no OUTPUT row at all, since Update() always added a difference check on the columns. Make that check optional through Update(checkConditionOnColumns) and expose it on UpsertAsync/UpsertBulkAsync, so callers can trade the extra writes for having every matched entity mapped.

filipklaric-lgtm and others added 2 commits July 31, 2026 12:19
Updated rows returned by MERGE were matched back onto entities by primary
key, so merging on any other columns left the generated key unmapped, as
the entity has no key to match on yet. Match updated rows on the columns
the merge was performed on instead, which is sound because a row comes
back as an update precisely when it matched the entity on those columns.

Matched entities that are already in sync produce no OUTPUT row at all,
since Update() always added a difference check on the columns. Make that
check optional through Update(checkConditionOnColumns) and expose it on
UpsertAsync/UpsertBulkAsync, so callers can trade the extra writes for
having every matched entity mapped.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
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.

2 participants