feat: Add IParsable<T> support for strongly-typed IDs#121
Open
tomilodk wants to merge 1 commit intoedandersen:masterfrom
Open
feat: Add IParsable<T> support for strongly-typed IDs#121tomilodk wants to merge 1 commit intoedandersen:masterfrom
tomilodk wants to merge 1 commit intoedandersen:masterfrom
Conversation
This adds support for primary keys that implement IParsable<T>, enabling CoreAdmin to work with strongly-typed ID patterns (DDD-style value objects). Previously, CoreAdmin only supported Guid, int, and long primary keys. Now it will also work with any type that implements IParsable<T>, such as: - record ResightsCvrSyncId(Guid Value) : IdBase<ResightsCvrSyncId> The conversion is done via a new ConvertPrimaryKey helper that: 1. Uses fast paths for Guid, int, long, string (existing behavior) 2. Checks for IParsable<T> and calls the static Parse method 3. Falls back to TypeConverter if available This enables Edit/Delete operations in CoreAdmin for entities using strongly-typed IDs that implement IParsable<T>. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
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.
Summary
This PR adds support for primary keys that implement
IParsable<T>, enabling CoreAdmin to work with strongly-typed ID patterns (DDD-style value objects).Problem: Previously, CoreAdmin only supported
Guid,int, andlongprimary keys. When using strongly-typed IDs like:Edit and Delete operations would fail with:
Solution: Added a
ConvertPrimaryKeyhelper method that:Guid,int,long,string(existing behavior)IParsable<T>interface and calls the staticParsemethod via reflectionTypeConverterif availableChanges
System.ComponentModelusing for TypeConverter fallbackConvertPrimaryKey(string id, Type clrType)static helper methodGetEntityFromDbSetto use the new helperDeleteEntityPostto use the new helperTesting
Tested locally with a .NET 10 project using strongly-typed IDs implementing
IParsable<T>. Edit and Delete operations now work correctly.Breaking Changes
None. This is fully backwards compatible - existing behavior for Guid/int/long is preserved.
🤖 Generated with Claude Code