Introduces AppEntityWithJsonProperty and related DbSet to test contexts, configures model to handle owned JSON properties, and adds tests to verify entity history tracking for nested JSON property changes and shared entities. Refactors EntityHistoryHelper to improve navigation property change handling.
Update EntityHistoryHelper to set the entity type name only for shared CLR types that are not owned entities. This prevents incorrect entity name assignment for owned types.
Refactored EntityHistoryHelper to better handle property changes for navigation properties mapped to JSON. Now, nested property changes are prefixed with the navigation property name, and duplicate property names are handled to avoid conflicts.
Enhanced EntityHistoryHelper to correctly handle entities with shared CLR types and properties mapped to JSON. Added logic to determine property type from entry values when the type is object, and improved property change tracking for JSON-mapped navigation properties.
Replaces GetAsync with GetOrNullAsync when retrieving feature definitions in FeatureChecker. This prevents exceptions when a feature is not found and returns null instead, improving error handling.
Updated SqliteBusyTimeoutSaveChangesInterceptor to execute the PRAGMA command only if the DbContext is using the Sqlite provider. This prevents unnecessary execution for non-Sqlite databases.
Moved module import extraction into a new ExtractModuleImportsInfo method for better readability and recursion. This change improves maintainability and enables recursive processing of module imports.
Introduced an extension point to allow consumers to implement their own authorization logic while preserving existing framework-level checks. This change enables method-level authorization to be overridden or extended through DI-friendly services, addressing the limitation caused by non-virtual methods and providing a clean, maintainable customization path.
Introduces NullTelemetryService to provide a no-op implementation of ITelemetryService. Updates AbpCliCoreModule to conditionally configure telemetry services based on the ABP_STUDIO_ENABLE_TELEMETRY environment variable.
Ensures the 'OldCli' flag is set in the AdditionalProperties dictionary within the telemetry context, creating the dictionary if it does not exist. This provides consistent telemetry data for identifying CLI usage.
Replaces property-based ITelemetryService injection with constructor injection and private readonly fields across CLI command and service classes. This change improves dependency management and aligns with best practices for service injection.
Moved solutionFile assignment to after telemetry activity tracking and removed passing solutionFile as a telemetry property. This streamlines the activity initialization and improves code clarity.