Claude/pr91 fixes 4szzut - #112
Draft
PhenX wants to merge 13 commits into
Draft
Conversation
* 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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.