Changelog 2020

December 2020

New Features

RavenDB 5.1

  • Switched RavenDB to version 5.1 (#289)

  • Major version upgrade with performance improvements

Application Virtual Path

  • Let Advanced handle ApplicationVirtualPath

  • Added ApplicationVirtualPath to GetRequestUri

Fixes

  • Fixed issue when GetSettingEntity is used with locked value

  • Fixed issue #288

Maintenance

  • Reduced usage of internal members for provider packages

  • Removed dependency on internal Profiler class

  • Web2Cdn changes

  • Nullability improvements for Advanced

  • Improved IsEfQuery detection

  • Cache SmtpConfiguration KeyValueList

November 2020

New Features

.NET 5.0 Support

  • Added .NET 5.0 target framework

  • Updated to latest framework version

Configuration

  • Added DisableLogDeletion configuration option

  • Better control over log retention

Mail Features

  • Added support for SmtpClient.PickupDirectoryLocation

  • MailImplementation missing features added

Fixes

  • Fixed NRE when websites.json is invalid

  • Handle Log offset on Linux

Maintenance

  • Updated Eazfuscator to 2020.3

  • Updated NuGet packages

  • Fixed contentFiles handling

  • Handle Eazfuscator obfuscation issues

  • RavenDB: Updated client package

  • RavenDB: Show log expiration information

  • RavenDB: LookupReference handling

  • Enable XML documentation generation

  • Nullability improvements

  • POA nullability

October 2020

New Features

KeyValueList Support

  • Added KeyValueList support

  • Better handling of key-value data

Custom Queries

  • Discover and sync CustomQueries

  • Automatic discovery and synchronization

Mail Service

  • Prefer IMailService interface

  • Better mail service abstraction

RavenDB Enhancements

  • Added IConcurrencyTokenHandler

  • Added AddObject overload method

  • Prefer interface usage

  • Implement most needed cases on POAReference

Fixes

  • Fixed exception when UserName is missing in body and no Authorization header is given

  • Fixed roundtrip handling for ConcurrencyToken

  • Fixed obfuscation issue

  • Fixed missing property for translations

  • RavenDB: Fixed profiler issue

  • Don't sort value objects

Maintenance

  • Made RepeatingJobs async

  • Remove temp type if not used

  • Use generic internal metadata on PO for extra client data

  • Reduce need for internal access for providers

  • RavenDB: PersistentObjectActionsReference in package

  • RavenDB: Use correct PackagePath for POAReference file

  • RavenDB: Prefer PersistChanges over Context.SaveChanges directly

  • Profiler improvements and parameter serialization tweaks

September 2020

New Features

Security Enhancements

  • Security changes and fixes

  • Better security handling

CORS Support

  • Added UseVidyano CORS hook

  • Enable CORS configuration

Model Hashing

  • Added model hashes

  • Better model versioning

Fixes

  • Fixed issue with static resource requests being passed to GetIndex

  • Don't fail when trying to include RequestId in Exception message

  • Fixed issue with repeating job using wrong TimeZone offset

  • Fixed issue when ExecuteAction gets a form submit without extra files

  • Fixed issue with AppInitialization

  • Fixed obfuscation issue with nullable annotations

  • Fixed issue with business rules with arguments not being invoked

  • RavenDB: Fixed OptimizeSelect issue when working with Reduce index

  • RavenDB: Handle ColumnReferenceEntity with empty id

Maintenance

  • Performance: string optimizations (array vs string)

  • Split Where in Where/ApplyDataSecurity

  • Handle string to JObject, better exception message

  • Improved logging OneTimeJobHost/RepeatingJobHost

  • Web2Cdn: Tweaks for cdn2

  • Web2Cdn: Don't append / to appsettings.json Web2Version

  • RavenDB: Updated RavenDB.Client package

  • RavenDB: Minimize database calls when user doesn't have UserSettings

  • RavenDB: Handle IEnumerable property text search

  • Return SystemLanguage for DefaultLanguage if cache is not loaded

  • Don't use app.UseHttpsRedirection()

August 2020

New Features

Time Zone Handling

  • TimeZoneHandling changes

  • Better timezone support

  • Naming consistency in TimeZoneInfo

User Management

  • Added CreateNewUser overload to add user to multiple groups

  • Better user creation options

Computed Attributes

  • Allow computed attribute with nested property

  • Added HasComputedAttribute method

Fixes

  • Fixed issue #285

  • Typo in ExceptionHandlerService RequestId logging

Maintenance

  • VidyanoDbCache.GetUserOrGroup(name)

  • Allow nested dynamic properties

  • Optional metadata for ValueObject

  • Show better message for repository upgrade

  • Tweaked assembly version handling

  • WebControllerLogger, default RequestId, fixed hour offset mismatch

  • RepeatingJob, fixed wait time and timezone handling

  • Improve GetObjectSet for RavenDB inheritance

  • Handle embedded ValueObject collection

  • PO type selection for ValueType collections

  • Comment, nullable annotations

  • RavenDB: Added DatabaseSettings.UseGuidIdentifiers

July 2020

New Features

Configuration

  • Expose IVidyanoConfiguration

  • Better configuration access

Maintenance

  • Skip EAZ for RavenDB

  • Allow nested dynamic properties

  • Optional metadata for ValueObject

June 2020

New Features

Cache Updates

  • EFCore cacheupdate basic implementation

  • Improved performance for LastLoginDate cacheupdate

  • CacheUpdates improvements

RavenDB Features

  • RavenDB: Prefer waiting for indexes when saving changes

  • RavenDB: Allow easier customization of DocumentConventions

  • RavenDB: Added ITargetRavenDBContext

  • RavenDB: Project helpers

Fixes

  • Fixed issue when synchronizing EF model

  • Fixed synchronize issue when multiple ValueObjects exist

  • Fixed translations issue

Maintenance

  • Better Excel invalid xml chars handling

  • Optionally use certificate store for RavenDB certs

  • Allow App_Data in ContentRoot

  • RavenDB: Added RavenDBOptions.EnsureDatabaseExists

  • Disable cacheupdate setting

  • Don't require Mapped attribute for context entities

  • Prefer EntityModel.GetHash()

  • Handle Enum and IgnoreProperty

  • Set IsValueObject on PO

  • ITargetContext shouldn't be IDisposable

  • Update cache after successful savechanges

  • Implement RavenDB cache updates (#277, #278)

  • Default New User in management to IsEnabled

  • RavenDB: Extra extension methods

  • Prefer StatusCodes over HttpStatusCode

May 2020

New Features

Charts

  • WIP line chart implementation

  • Charts: Move BarChart to ProviderSpecificChartService

  • WIP provider specific chart service

RavenDB Enhancements

  • RavenDB: Document expiration for logs

  • RavenDB: Document expiration for RegisteredStream

  • RavenDB: Prefer appsettings for connection info

  • RavenDB: Updated client version

Fixes

  • Fixed GetReport

  • Fixed updatable log not working in EFcore

  • Fixed ExecuteAction with input file not working

  • Fixed Except on DbSet

  • Fixed issue when changing Setting Description

  • RavenDB: Fixed Log User

  • RavenDB: Fixed updatable log

  • RavenDB: Fixed feedback screenshot showing

  • RavenDB: Fixed issue with DistinctValues

  • Fixed issue with not being able to save QueryFilters

  • RavenDB: Fixed sorting and filtering on reference attribute

Maintenance

  • Trust Cloudflare as a proxy

  • Also flag Edge as outdated

  • ArrayDeconstructionExtensions added

  • Expose NeedsSimplifiedExpression

  • Fixed report documentation URL

  • Provide hook for non-Windows IsValidImage validation

  • RavenDB: Also delete profile/settings when deleting user

  • Async OneTimeJob

  • Prefer HttpMethods over HttpMethod

  • IFeedbackDto removed unused Screenshot property

  • TODO cleanup

April 2020

New Features

Major Architecture Overhaul

  • BREAKING: Complete repository provider abstraction

  • Split User/Group functionality

  • Added IRepositoryUserStore

  • Moved all DbSets from VidyanoDbContext

  • Added IRepositorySettingStore

Dependency Injection

  • Use DI for creating PersistentObjectActions objects

  • Extra DI changes

  • Updated group actions for DI

Configuration

  • Added VidyanoConfiguration

  • Create random salts/token on startup if needed

  • Allow extra data on JWT token

Schema Synchronization

  • Finalized EF Core schema synchronizer

  • Added schema synchronizer for non-EF model

Fixes

  • Fixed GetDiagnostics/Api not working

  • Fixed invalid initial schema SQL

  • Fixed issue with invalid PK type for Vidyano.Logs

  • Fixed Parameterize obfuscation issues

  • Fixed redirect issue when going to website path without trailing slash

  • Fixed setting profile value when no profile exists

  • Fixed incorrect use of IServiceProvider for ActivatorUtilities

  • Fixed bulk edit on POA

Maintenance

  • Removed License PO

  • Working RavenDB implementation

  • Added EntityFrameworkCore logging

  • Only create new ServiceScope if needed

  • Fixed projection issues

  • RavenDB: Fix log filtering

  • Fixed issue with serialization of DataTypeHints

  • RavenDB: Handle references

  • Added DelayedCount support

  • Added ProviderSpecificService.GetEntityByObjectId

  • Allow start from empty model.json/culture.json/security.json

  • Persist culture.json/security.json when empty

  • Added NoDB UserSettings/UserProfiles

  • Also delete usergroups when removing user

  • Move GetTotalItem to ProviderSpecificService

  • EFcore: Parse issue with logging parameters

  • Use AsyncLocal fields instead of CallContext

  • RavenDB: Correctly flag as needsSimplifiedExpression

  • RavenDB: Ignore projected fields for GetTotalItem

  • RavenDB: Include DB profiling

  • Fixed TypeHint serialization

  • RavenDB: Moved database to production server

  • RavenDB: Handle GetGroupingInfo/GetTotalItem

  • RavenDB: Don't optimize projections

  • RavenDB: Fixed issue when using reference attribute with other PO type

  • RavenDB: RegisteredStream

  • Fixed issue with OnGetStream

  • Removed old Web1 binding

  • Fixed issue with initial run not loading data types correctly

  • Updated SwaggerInfoAttribute

  • Tweaked handling of AsDetail value objects

  • Nullability tweaks

  • RavenDB: Added Orders/OrderLines

March 2020

New Features

Service Worker

  • Added service worker support

  • Better offline capabilities

Value Objects/ViewModels

  • Added ValueObject/ViewModel attribute

  • Better data modeling support

Nullable Reference Types

  • WIP #nullable support throughout codebase

  • Better null safety

In-Memory Logging

  • Added InMemoryLogProvider

  • Removed DisableLogs

Fixes

  • Fixed index.html for Chrome80

  • Fixed issue with not being able to search on computed displayattribute

  • Fixed obfuscation issues

Maintenance

  • Set up CI with Azure Pipelines

  • Removed dependency on IObjectContextAdapter

  • Expose GetTextSearchExpressionForXXColumn helpers

  • LogVerbose tweaks

  • WIP RavenDB implementation

  • WIP VidyanoCultureContext

  • Moved culture related queries from VidyanoDbContext

  • WIP settings

  • First run db initialization efcore

  • WIP interface DTO

  • Moved extra custom queries

  • Small bugfixes

  • Moved logic to VidyanoModelContext

  • Unix timezone mapping

  • Removed Advanced.SingleInstance, UpdateCacheFromDatabase

  • WIP added IProviderSpecificService

  • Timezone fix

  • Removed NativeOnly

  • Removed SemanticZoom

  • Renamed IXXProvider to IXXStore

  • Made repository projects default nullable

  • Removed obsolete Effort related code/files

  • WIP Sample NoDB project

  • WIP VidyanoDbContext cleanup

  • Fixed sample NoDB project

  • WIP IRepositorySettingStore

  • Removed Settings from VidyanoDbContext/NoDatabase

  • Breaking change Vidyano.Logs

  • RavenDB: Explicit id determiner

February 2020

New Features

Exception Handling

  • Tweaked exception handling for /Authenticate calls

  • Better error handling

Fixes

  • Handle failed loaded cache for WebControllerLogger

January 2020

New Features

  • Tweaked Advanced Search Save/Load functionality

  • Better search capabilities

Fixes

  • Fixed issue when searching ref attr with missing breadcrumb columns

  • Fixed issue with AdvancedSearch ExportToExcel not working

Maintenance

  • Trim userName input for GetCredentialType

  • Updated copyright year to 2020


Note: 2020 was a major refactoring year with the complete overhaul of the repository provider system, introduction of RavenDB support, and migration to .NET 5.0. Many breaking changes were introduced to support provider abstraction.

Was this helpful?