Skip to content

Claude/pr91 fixes 4szzut - #112

Draft
PhenX wants to merge 13 commits into
copilot/add-include-graph-supportfrom
claude/pr91-fixes-4szzut
Draft

Claude/pr91 fixes 4szzut#112
PhenX wants to merge 13 commits into
copilot/add-include-graph-supportfrom
claude/pr91-fixes-4szzut

Conversation

@PhenX

@PhenX PhenX commented Jul 2, 2026

Copy link
Copy Markdown
Owner

No description provided.

SebastianStehle and others added 13 commits March 21, 2026 08:20
* MySQL with a pamelo fork.

* File was not saved.

* Add a note to readme.
* MySQL with a pamelo fork.

* File was not saved.

* Add a note to readme.

* Remove all conditional builds.

* Another fix.
…umns (#99)

* Add tests for List<E> properties and PostgreSQL array columns

Agent-Logs-Url: https://github.com/PhenX/PhenX.EntityFrameworkCore.BulkInsert/sessions/5895f1a5-7481-4d46-ad56-4185202559fd

Co-authored-by: PhenX <42170+PhenX@users.noreply.github.com>

* Fix net10 build errors: upgrade Microting MySql NTS package and fix namespace

Agent-Logs-Url: https://github.com/PhenX/PhenX.EntityFrameworkCore.BulkInsert/sessions/3f27f5f0-246a-4335-a151-598367d015f7

Co-authored-by: PhenX <42170+PhenX@users.noreply.github.com>

* Add targeted regression tests for issue #98 (List<E> inserted as empty array)

Agent-Logs-Url: https://github.com/PhenX/PhenX.EntityFrameworkCore.BulkInsert/sessions/35321946-6e22-4fef-ae93-63fcb4d9a4cb

Co-authored-by: PhenX <42170+PhenX@users.noreply.github.com>

* Add HasColumnType test, clean up comments, add copilot instructions

Agent-Logs-Url: https://github.com/PhenX/PhenX.EntityFrameworkCore.BulkInsert/sessions/061e8659-734e-4464-a9ff-d6d3d55f5ded

Co-authored-by: PhenX <42170+PhenX@users.noreply.github.com>

* Add positional-record entity and test for enum list bulk insert

Agent-Logs-Url: https://github.com/PhenX/PhenX.EntityFrameworkCore.BulkInsert/sessions/d8061788-70e3-42d4-877f-6147dbf98c84

Co-authored-by: PhenX <42170+PhenX@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: PhenX <42170+PhenX@users.noreply.github.com>
* Initial plan

* Add logging similar to EF Core: BulkInsertExecuted and ExecutedDbCommand log messages

Agent-Logs-Url: https://github.com/PhenX/PhenX.EntityFrameworkCore.BulkInsert/sessions/481b78be-69b9-450e-b8b4-3c7176838952

Co-authored-by: PhenX <42170+PhenX@users.noreply.github.com>

* Apply review fixes for logging and resource disposal

Agent-Logs-Url: https://github.com/PhenX/PhenX.EntityFrameworkCore.BulkInsert/sessions/50f8adc9-2589-4b71-a87e-14db3ec99af9

Co-authored-by: PhenX <42170+PhenX@users.noreply.github.com>

* Update docs and Copilot instructions for logging changes

Agent-Logs-Url: https://github.com/PhenX/PhenX.EntityFrameworkCore.BulkInsert/sessions/056ca3a1-0d57-424f-a270-daf8457b20bd

Co-authored-by: PhenX <42170+PhenX@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: PhenX <42170+PhenX@users.noreply.github.com>
* Add OpenTelemetry instrumentation project and update README

* Rename OpenTelemetry.Instrumentation.PhenX.EntityFrameworkCore.BulkInsert ->
PhenX.EntityFrameworkCore.BulkInsert.OpenTelemetry

* Format Tables
…ver() (#105)

* Initial plan

* Fix: include Guid PKs in bulk INSERT by default (unless they have a SQL default/computed expression)

Agent-Logs-Url: https://github.com/PhenX/PhenX.EntityFrameworkCore.BulkInsert/sessions/aa61e1ea-a4c4-4114-857f-cd0d547277d4

Co-authored-by: PhenX <42170+PhenX@users.noreply.github.com>

* Fix: also treat HasDefaultValue() Guid columns as generated; assert Guid ID in merge test

* Fix: use FindAnnotation(RelationalAnnotationNames.DefaultValue) instead of GetDefaultValue() for Guid generated check

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: PhenX <42170+PhenX@users.noreply.github.com>
* Fix Oracle bulk insert schema qualification issues (#1)

- Fix double-schema qualification when EF Core default schema is configured
- Clarify table name handling comment

* Fix Oracle destination schema

---------

Co-authored-by: PhenX <fabien.menager@gmail.com>
…#109)

When an OnConflictOptions<T>.Update expression resolves to zero columns (an
entity that is nothing but its primary key, expressed as an empty member-init
new T { }), the generated upsert clause was emitted empty and produced invalid
SQL: PostgreSQL 42601 / SQLite "near ;" for the ON CONFLICT DO UPDATE SET path,
an empty WHEN MATCHED ... UPDATE SET on SQL Server MERGE, and an
InvalidOperationException on Oracle MERGE.

Degrade to an insert-only upsert when there is nothing to update: the base
dialect emits ON CONFLICT DO NOTHING, and the SQL Server / Oracle MERGE paths
omit the WHEN MATCHED clause. This also makes Oracle consistent with the other
providers instead of throwing. The non-empty update path is unchanged.

Adds MergeTestsBase.InsertEntities_WithEmptyUpdate_DoesNothingOnConflict, which
inserts, mutates locally, re-inserts with an empty-update expression, and
asserts no duplicates and original values preserved across every provider.

Co-authored-by: Dan Dees <dand@appsmiths.com>
Documents fixes for all correctness and performance issues found in the
audit of the IncludeGraph feature branch: unordered generated-ID
propagation, many-to-many orientation bugs, shared-type join table
support, existing-entity re-insertion, generated-key classification,
metadata caching, and related test/docs work.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PXNtEarAi8W5D2NYcMSvjE
…t' into claude/pr91-fixes-4szzut

# Conflicts:
#	README.md
Implements the correctness-critical and mechanical fixes from PR91-FIX-PLAN.md
on top of the merged IncludeGraph feature:

- Fix 6: single shared PropertyHelpers.IsDatabaseGenerated predicate (reconciled
  with #105), used by ColumnMetadata and the graph gate/save paths so client-
  generated Guid keys are no longer treated as database-generated.
- Fix 2: throw InvalidOperationException on ID-propagation count mismatch instead
  of logging and continuing with default foreign keys.
- Fix 1: pair inserted rows back to originals by non-generated column content
  rather than unspecified row order (positional fallback when content is coerced).
- Fix 8: key the rollback PK map by reference equality.
- Fix 3: resolve join FK/inverse-FK per record and dedup logical join rows across
  both navigation orientations by FK column values.
- Fix 11: InsertJoinEntities returns the actual inserted count (0 for skipped
  shared-type joins) so TotalInsertedCount is honest.
- Fix 10: IncludeGraph now throws on the ReturnEntities/ReturnEnumerable APIs.
- Fix 13: return the actual captured root instances (handles TPH/proxy roots).
- Fix 12: resolve lazy-loading proxy / derived CLR types to the model type.
- Fix 7: throw descriptive NotSupportedException for shadow foreign keys,
  required foreign-key type cycles, and multi-level self-referencing graphs with
  database-generated keys instead of failing silently.
- Fix 5: add opt-in GraphEntityFilter to skip already-persisted entities.
- Fix 9: iterative graph traversal (explicit stack) to avoid StackOverflow.
- Fix 14 (partial): build GraphMetadata once and share it with the collector.

Docs updated for the new option, entity-mutation behavior and loud limitations.

Deferred (documented): full shared-type Dictionary join support (kept as a
skip-with-warning to avoid regressing untested integration tests), no-tracking
materialization, and benchmark restructuring.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017TK6BSpyMbhrMQKHttj3G4
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.

6 participants