Simplified the logic for mapping extra properties by removing redundant reference checks and always invoking MapExtraProperties with appropriate defaults. Updated related tests and removed unnecessary [MapExtraProperties] attributes from sample mappers.
Introduces the InboxProcessorRetryBackoffFactor option to allow configuration of the initial retry delay for the inbox processor when using the RetryLater failure policy. Updates documentation and logic to use this factor for exponential backoff, providing more flexibility in handling event retries.
Introduces a ProviderName property to IRepository and related base classes, requiring repositories to specify their provider via constructor. Adds provider constants for EF Core, MemoryDb, and MongoDB, and updates repository implementations and tests accordingly. Also refactors EntityName to a public property and renames WithEntityName extension to SetEntityName.
Refactored repository interfaces and implementations to replace SetCustomEntityName and CustomEntityName with SetEntityName and EntityName for consistency and clarity. Updated related extension methods and tests to use the new naming.
Moved the primitive type conversion logic from HasExtraPropertiesExtensions.GetProperty<TProperty> to a new TypeHelper.ChangeTypePrimitiveExtended<TProperty> method. This centralizes and simplifies type conversion, improving code maintainability and reuse.
Introduces the ability to set a custom entity name for repositories by adding a SetCustomEntityName method to IRepository and BasicRepositoryBase. Updates EfCoreRepository to use the custom entity name when accessing DbSet, and extends IEfCoreDbContext with an overload of Set<T> that accepts a name. Test stubs are updated to implement the new method.
Wrapped event processing in a try-catch block to log errors when processing individual events fails. This prevents one failed event from interrupting the processing of subsequent events and improves reliability.
Added DateOnly and TimeOnly to TypeHelper.IsPrimitiveExtended for .NET Core. Also updated MethodInvocationValidator to allow nulls for nullable parameter types, improving validation logic for modern .NET types.