The JS version changelog is available by this link.

Version 7.3.3


Version 7.3.1


Version 7.3.0


Version 7.2.5-rc03

  • [New]: .NET 8.0 support

  • [Fix]: "Just sorted" columns were not added to the GROUP BY clause

  • [Fix]: Aggregates calculation for non-numeric data

  • [Fix]: The problem with "Index out of range" exception on exporting aggregated data

  • [Fix]: The problem with DBNull values processing on exporting aggregated data

  • [Fix]: Index was out of range problem on aggregation

Version 7.2.4

  • [New]: Add Globals to AspNet4 and AspNetCore packages

  • [New]: AddBOM option in CsvDataExportSettings and HtmlDataExportSettings

  • [Upd]: Query builder is executed before the PreFetch call now

  • [Upd]: Add RowLimit property to ExportSeetings

  • [Fix]: Wrong column number in the ORDER BY if there are disabled columns in the query

  • [Fix]: SqlQueryBuilder threw an exception on queries with constant columns

  • [Fix]: BuildQuery method in LinqQueryBuilder

  • [Fix]: Query parameters generation in sub-queries

  • [Fix]: Different order on the webpage and in the exported result set

  • [Fix]: Auto conversion of the old special date/time value editors to new ones

  • [Fix]: Wrong behavior on operand's editor loading from JSON model files

  • [Fix]: LINQ query builder didn't process DateTimeOffset fields correctly

  • [Fix]: Wrong value of dates in non-UTC timezones in result sets

Version 7.2.3

  • [New]: Add UseUtcTime to EasyQueryOptions

  • [New]: RemoveThis method in Condition class

  • [New]: TimezoneOffset property in QueryBuilderOptions

  • [New]: Condition.Find method

  • [New]: IsModified property in Query class

  • [New]: QueryChanged event in Query class

  • [New]: New method: Query.ChangeColumnAttr(column, attrId)

  • [New]: NextNDays, NextNMonths, NextNYears, NextNHours operators

  • [New]: WriteExtraContentAsync method in EasyQueryApiHandler

  • [New]: Add AuxData property to EasyQueryManager

  • [New]: Add UseOuterJoins option to DbContextModelExtractorOptions

  • [New]: A possibility to add a "const = const" condition

  • [Upd]: DbConnectionModelLoader constructor now takes a connection resolver in the first parameter instead of actual connection object

  • [Upd]: DME auto-select newly added table

  • [Upd]: Add extra information to the response payload if an error occur on EasyQuery API request processing

  • [Fix]: NullReferenceException on DbContext model loading

  • [Fix]: Unhandled exception on URL click in the New Model dialog

  • [Fix]: Proper Null values processing in GetDbColumnName function

  • [Fix]: ColumnsPanel rendered a new column twice in WinForms edition

  • [Fix]: Wrong behavior of old "special dates" value editors

  • [Fix]: Problem with loading special dates operators

  • [Fix]: Query.AddCollumn method didn't process LookupAttr properly

  • [Fix]: SpecDateValues editor (from old versions) was not processed correctly

  • [Fix]: IsNullable was not set propery in the DbContextModelLoader

  • [Fix]: DbCommandTuner was never called

  • [Fix]: NullRefereceException for some value lists in data-filtering scenario

  • [Fix]: EqListValueEditor attribute - listName and Id params processing

Version 7.2.2

  • [New]: A possibility to add a "const = const" condition

  • [Upd]: Add Attribute ID field to DME

  • [Upd]: Update to EasyData 1.4.7

  • [Fix]: EqListValueEditor attribute - listName and Id params processing

  • [Fix]: Problem with decimal (currency) fields in Sqlite

  • [Fix]: NullRefereceException for some value lists in data-filtering scenario

Version 7.2.1

  • [New]: LastNHours, LastNDays, LastNMonths operators

  • [New]: UseNameColumnsInLookups option in DbConnectionModelLoaderOptions

  • [New]: IEasyQueryConfigurator interface. It allows to move EasyQuery middleware setup in a separate "Configurator" class

  • [New]: DbModel.DbParams.ShowDbNameForTables option

  • [New]: WPF ColumnsPanel now allows to use drag-n-drop to change columns order

  • [New]: Read EasyQuery.lck file to get the license key

  • [Upd]: Add Table Priority field to DME

  • [Upd]: Add IsNull/IsNotNull operators for all key fields to support LEFT JOIN queries

  • [Upd]: Sorted columns order is syncronized by default with the order of query columns

  • [Fix]: Process IsNullable on data model creation in DME

  • [Fix]: KeyNotFoundException on exporting datasets with COUNT aggregation on non-numeric fields

Version 7.2.0

  • [New]: Now we can use AddDays, AddMonths, and AddYears functions in attribute expressions

  • [New]: modelId and extra properties in QueryListItem

  • [New]: DateBeforeSpecial and DateAfterSpecial default operators in data models

  • [New]: Add format parameter to data export tuner

  • [New]: Add .NET 6.0 target for some EasyQuery packages

  • [New]: IsObligatory property in TableLink

  • [Upd]: Make Settings and GetQueryFolderPath methods in FileQueryStore protected

  • [Upd]: string[] is used for RazorUI.Globals.ExportFormats instead of comma-separated string

  • [Upd]: Add Table Priority field to DME

  • [Fix]: WPF QueryPanel in the SubQuery dialog now copies all the settings from the parent query panel

  • [Fix]: Exception on export when we have zero group columns in aggregation settings

  • [Fix]: EasyQueryManager couldn't get a connection from a DbContext for SQLite

Version 7.1.2

  • [New]: AutoOuterJoins option: converts inner joins to outer ones automatically when necessary

  • [Upd]: A possibility to modify table's properties (name, schema, db) in DME

  • [Fix]: Wrong cast for the record count query that returns more than Int64

  • [Fix]: Wrong data type for aggregate columns

  • [Fix]: Hide MIN and MAX aggregate functions for boolean columns

  • [Fix]: NullReference exception on building SQL with custom columns

  • [Fix]: Replace full table paths with aliases in Custom SQL fields

  • [Fix]: Incorrect SQL when a custom column expression contains fields from different tables

Version 7.1.1

  • [New]: AggregationSettings.CaseSensitiveGroups option

  • [Upd]: Most of the method in SqlQueryBuilder class are protected virtual now

  • [Upd]: The latest version of EasyData library (1.3.4) is used now

  • [Fix]: Issue with saving query in ASP.NET 4

  • [Fix]: An error on virtual attribute expression processing

  • [Fix]: TimeZoneOffset was not processed properly for LINQ queries

  • [Fix]: Few fixes for aggregation logic introduced in 7.1.0

  • [Fix]: Auto-generated parameterі were not cleared on BuildSQL / BuildParamSQL calls in SqlQueryBuilder

Version 7.1.0

  • [New]: AddDbTable method of TableStore

  • [New]: MergeEntities method in the DataModel class

  • [Upd]: DebugMode option

  • [Upd]: Add possibility to default format for type

  • [Upd]: Add EnableAggrSelectInSubQuery option for QueryPanel in WPF edition

  • [Upd]: Improve AddLink method of TableLinkStore to accept DbTable as parameters

  • [Upd]: Improve enum support

  • [Upd]: Support bool formatting.

  • [Upd]: INFO loging in EasyQueryManager and EasyQueryApiHandler

  • [Upd]: Make async operations cancelable via CancellationToken. ASP.NET Core middleware and ASP.NET Web API controller now support canceling operations on aborting the request

  • [Fix]: Incorrect rendering of the Operators / General tab in DME

  • [Fix]: Add a column alias in Count SQL (some DBs throw an error without it)

  • [Fix]: Wrong path search algorithm on SQL generation

  • [Fix]: Wrong behavior in DbModel.CreateTableAlias if createEntity == true

  • [Fix]: Wrong boolean literals for PostgreSQL

  • [Fix]: Bug with exception when add custom column to result set

  • [Fix]: TablePathFinder could add a surplus table sometime

Version 7.0.11

  • [Fix]: Null reference exception on loading model from a DbContext when a type per hierarchy (TPH) approach is used in EF6.

Version 7.0.10

  • [Fix]: An error in the situation when the numbers of query columns and result set colums don't match.

Version 7.0.9

  • [Upd]: Editing applied types for aggregate functions

  • [Fix]: Issue with enum properties

  • [Fix]: CROSS APPLY joins

Version 7.0.8

  • [Upd]: Pass IEqResultSet into AfterColumnsAdded of ResultSetOptions

Version 7.0.7

  • [Fix]: Alias search index validation in table-list to prevent index out of range exception

Version 7.0.6

  • [Upd]: Performance on loading table fields was improved for such DbGates: SqlServerGate, NpgSqlGate, MySqlGate, OdpCoreGate

  • [Upd]: Prevent adding MetaEntity or MetaEntityAttr to the DataModel

  • [Upd]: DataModel loading performance from JSON was improved

  • [Fix]: CreateValueEditor in ModelEditorForm

  • [Fix]: Filling DbName for table in SqlServerGate

Version 7.0.5

  • [Fix]: DbGate is disposable now and uses passed connection to LoadFromConnection DbModel extension instead of creating a new one.

Version 7.0.4

  • [Upd]: New signatures for DbEntityAttrDescriptor constructors
  • [Upd]: Support totals during export
  • [Fix]: Problem with AddConditions button in WinForms edition
  • [Fix]: Setting display format during LoadFromEntityType.

Version 7.0.2

  • [New]: Add UseSchemas(schemas) method to DbConnectionModelLoaderOptions.

  • [Fix]: Legacy paging behaviour

  • [Fix]: Wrong SQL error for Oracle DBs

  • [Fix]: Problem with method not found for NpgSql 5.0.x version in NpgSqlGate

Version 7.0.1

  • [Fix]: The list of entities was incorrectly filtered after opening Edit Sub-Query dialog

  • [Fix]: Wrong type of result columns when COUNT aggregate function is used

  • [Fix]: Remove surplus PreFetch on exporting

  • [Fix]: GetRecordCountAsync behaviour when there is no selected column in query

  • [Fix]: Null reference exception in GetOperand

  • [Fix]: Wrong behavior of Condition.Clone for conditions with sub-queries

Version 7.0.0

  • [New]: PDF and Excel exporters

  • [New]: DisplatFormat for EntityAttr

  • [New]: eq-page-navigator tag helper in ASP.NET Core

  • [New]: DataModel.Validate function that throws an exception if something is wrong with the model

  • [New]: AppliedTo property in AggrFunction - defines the list of types this aggregate function can be applied to

  • [New]: AutoResolveModelOnQueryLoad option in EasyQueryOptions

  • [New]: MapEasyQuery extension method

  • [New]: SortAlphabetically option when loading model from DbContext

  • [New]: Add policy support for DefaulteqauthProvider in ASP.NET Core

  • [New]: New CreateEntityAttr and AddEntityAttr methods of model that take descriptor

  • [New]: AddColumn method in Query to create column by descriptor

  • [New]: AddLink and UpdateLink methods in TableLinkStore

  • [Upd]: Rename Column -> QueryColumn and its events

  • [Upd]: RazorUI options ExportFormats. Allows define formats to be used on client-side as comma-separated list

  • [Upd]: Pass columns in BeforeAddRow function. CreateRow is now virtual

  • [Upd]: Change LicenseKey endpoint logic. Add support for ASP.NET 4

  • [Upd]: Korzh.EasyQuery.WinForms.ModelEditor now supports .NET Core 3.1 and .NET 5

  • [Upd]: Make FileQueryStore more flexible for inheritance

  • [Upd]: Use Microsoft.Data.SqlClient package for SqlServerGate

  • [Upd]: DbContextModelLoader uses the same SqlFormats as defined in EasyQueryOptions

  • [Upd]: AlwaysQuote sql format to determine wether all tables and columns should be always quoted in SQL

  • [Upd]: Add missed resource strings for date/time operators

  • [Upd]: Refactor EasyQueryManager lifecycle in ASP.NET 4.x Controller.

  • [Upd]: Chart setting for Razor pages. Use ResultFacetsPanel for AdhocReporting if JS Version is 6.1.x or higher

  • [Upd]: Remove QueryFormats and DbQueryFormats. SqlFormats introduced.

  • [Upd]: Optimize fetching data. Refactor with async methods

  • [Upd]: Removed DbColumn class.

  • [Upd]: DbQuery constructor throws error if model is not DbModel

  • [Upd]: Auto additg editor to the model on assigning for attribute or operand. Add special function to set editor without such logic

  • [Upd]: AddSimpleCondition overload with EntityAttr and Operator parameters

  • [Upd]: Rename MsSqlGate -> SqlServerGate package

  • [Upd]: TableLinkList.FindByTables overload to take table aliases as parameters

  • [Fix]: Reading schema and db name of table in NpgSqlGate

  • [Fix]: Add Transaction to SQL keywords list for auto-qouting

Version 5.4.7 - EasyQuery Kernel packages

  • [Fix]: Save LimitClause and SelectTop query options to XML and JSON

  • [Fix]: Data model operators saving/loading to/from JSON

Version 5.4.6 - EasyQuery Kernel packages

  • [Fix]: Wrong processing of "formats" request parameter in EasyQueryManagerSql

  • [Fix]: "IsAggregate" was not set properly for Custom SQL expressions

  • [Fix]: NullReference exception in case of "no path between 2 tables" situation

  • [Fix]: NullReference exception on queries with InJoin conditions

Version 5.4.5 - EasyQuery Kernel packages

  • [Upd]: Chart setting for Razor pages. Use ResultFacetsPanel for AdhocReporting if JS Version is 6.1.x or higher

  • [Fix]: Support for views in EF Core 5.0

Version 5.4.4 - EasyQuery Kernel packages

  • [New]: Add PreserveFormatting in IDataExportSettings

  • [New]: Condition.Clone method

  • [Upd]: Add ShowDatasetInfo options to DataExportSettings. Add GetDefaultSettings to default exporters

  • [Fix]: Support TPH in Entity Framework Core.

  • [Fix]: Ignored navigation properties were still added into the model

  • [Fix]: Processing sub-queries that have fields from the parent queries

  • [Fix]: Bug with adding expressions to group by from Virtual attributes and Custom Expressions when GroupByCalcColumns is turned off.

  • [Fix]: Incorrect processing of old macro values (like $) on XML loading

  • [Fix]: Error on loading XML queries with sub-queries

Version 5.4.4 - EasyQuery .NET Framework packages

  • [Fix]: Drag-n-drop processing for LookupAttr attributes

  • [Fix]: EntitiesPanel shows both attributes lined with LookupAttr

  • [Fix]: Duplicate operation now creates new condition right after the original one

Version 5.4.3 - EasyQuery Kernel packages

  • [New]: ReturnQueryStatementOnExecute option fpr middleware

  • [Fix]: New queries were stored automatically if SaveQueryOnSync was turned on

  • [Fix]: Add Guid to quoted types

  • [Fix]: Do not hide UNIQUE fields with KEY fields for MsSqlServer when model is loaded from connection

Version 5.4.3 - EasyQuery .NET Framework packages

  • [New]: ReturnQueryStatementOnExecute option processing

Version 5.4.2 - EasyQuery .NET Framework packages


Version 5.4.2 - EasyQuery Kernel packages

  • [New]: GetQueryFileExt function in EasyQueryApiHandler

  • [New]: Sort enum by its names with special attribute for property - EqSortByEnumNames

  • [Fix]: Make EasyQueryManager IDisposible

  • [Fix]: DateTimeOffset was recognized as Int32 in SqlClientGate

  • [Fix]: Table category saving/loading to/from JSON

Version 5.4.1 - EasyQuery .NET Framework packages

  • [Upd]: Return querySaved on Sync

  • [Fix]: Return meta on executeQuery

Version 5.4.1 - EasyQuery Kernel packages

  • [New]: SkipForeignKeys option in DbContextLoaderOptions

  • [New]: HideKeyFields parameter in DbConnectionLoaderOptions

  • [New]: Default list value editors for special dates and times

  • [New]: Hide method in EntityAttr

  • [New]: Custom linq operators

  • [New]: QueryTuner option

  • [Upd]: Return querySaved on Sync

  • [Fix]: Value Editor wasn't saved together with default operand

  • [Fix]: Asynchronous saving/loading of InnerData and ExtraData in Query

  • [Fix]: Wrong behavior of TableStore.Add

  • [Fix]: UseInSorting parameter of Attribute processing on LoadFromEntityType

  • [Fix]: Check if Query not null before calling BuildQuery in EasyQueryManager

Version 5.4.0 - EasyQuery .NET Framework packages

  • [New]: Save query to file/ Load query from file functionality

  • [New]: GetFileExtentionByContentType virtual method.
    This method allows to override the default behavior of getting the extension of the exported file by the content type.

  • [New]: Index property in EqEntityAttribute and EqEntityAttrAttribute

  • [New]: Saving Model DbParameters locally in DME

  • [New]: Error processing in EasyQueryApiController

  • [Fix]: Table -> Aliases splitting mechanism on loading from a DbContext or DbConnection

  • [Fix]: Remove BOM from the response content created by EasyQuery actions result classes

  • [Fix]: Checking connection string before checking db connection in DME

  • [Fix]: Save model loaded from JSON file in DME

  • [Fix]: Process ExtraParams in EasyQueryApiController.

Version 5.4.0 - EasyQuery Kernel packages

  • [New]: EqErrorResult implementation of ActionResult for Controller

  • [New]: Save query to file/ Load query from file functionality

  • [New]: Clien Extra Conditions support

  • [New]: DoNotPrettifyNames method in DbConnectionLoaderOptions

  • [New]: Lightweight result set format

  • [New]: Query.InnerData dynamic property
    This object allows to store some addtional information with each query. For example, save the list of facets in the result panel

  • [New]: FileQueryStoreSettings.FileFormat property.
    By default this the value of this property is "json" but you can also set to "xml"

  • [New]: HasSubQuery option in EntityAttr
    It's set to true when the attribute's expression contains a sub-query

  • [New]: Add custom tuner

  • [New]: AddFileExtensionsResolver to middleware options.
    This option allows to amend the file extension of the exporting data.

  • [New]: DeleteSubEntities() methods in Entity class.
    2 methods which allow to remove sub-entities of some entity based either on their names or some "filter" function.

  • [New]: Show() and Hide() method in Entity class
    These methods allow to hide or show some entity (turn off/on all UseIn... properties) with a one line of code

  • [New]: DisplayName property in EqEntityAttrAttribute

  • [New]: TableLink.SwitchDirection method
    This method allows to switch the direction of the link between two tables (Table1 -> Table2 becomes Table2 -> Table1)

  • [New]: Add Index property to EqEntityAttribute and EqEntityAttrAttribute

  • [Upd]: Refactor EasyQueryMiddleware with EasyQueryApiHandler

  • [Upd]: Suppot sorted columns in DynamicQuery

  • [Fix]: ExecuteQuery of EasyQueryManagerLinq. Add SortedColumns support

  • [Fix]: Save/Load Query.ExtraData to/from XML

  • [Fix]: GROUP BY cluase for columns with sub-queries

  • [Fix]: Table -> Aliases splitting mechanism on loading from a DbContext or DbConnection

  • [Fix]: TableLink.Enabled was not saved to the data model file

  • [Fix]: Table priority was not taken into account on constructing the path between tables

  • [Fix]: Saving editors in JSON

  • [Fix]: Saving file path on loading model from JSON file

Version 5.3.7 - EasyQuery Kernel packages

  • [New]: DataExportTuner interface
    This interface allows you to tune export settings

  • [New]: ExtraParams property in ListValueEditor

  • [Upd]: Updated the registration of CustomValueListResolver.
    Notice. Old AddValueListResolver method of EasyQueryOptions is deprecated now. Use a new one.

Version 5.3.6 - EasyQuery .NET Framework packages

  • [Fix]: Name prettifier on model load

  • [Fix]: Problem with macro processing date in WinForms

Version 5.3.6 of EasyQuery kernel packages

  • [Fix]: Wrong SQL when there is a group with all disabled conditions

  • [Fix]: Name prettifier on model loading from a DbConnection

  • [Fix]: Problem with SelectDistinct when LegacyPaging is true
    Now SqlQueryBuilder uses DENSE_RANK() function instead of ROW_NUMBER() when SelectDistinct is true

  • [Fix]: Formatting when value contains new line symbol

  • [Fix]: Ignore RowNumber column on export
    RowNumber column for legacy page was not ignored on export

Version 5.3.5 of EasyQuery kernel packages

  • [New]: Formats.JoinsOrder propery in SqlQueryBuilder
    Allows to define the order of table joins in the FROM clause of generated SQL

  • [New]: LegacyPaging option for DbQueryFormats
    Enables paging which uses ROW_NUMBER() function.

  • [New]: UseCustomFuncInOrderBy option for DbEntityAttr
    If the option is set to false, CustomFunc of the EntityAttr will not be added to order by expression.

  • [Fix]: Wrong format of JSON file on saving via FileQueryStore
    If size of the target file is bigger than the size of the saved content - we got wrong JSON in result.

  • [Fix]: Paging support for Oracle
    Paging was not turned on by default for FormatType.Oracle format type. Now it's properly supported the similar way as for SQL Server

Version 5.3.4

  • [New]: ReturnQueryOnSave option for EasyQueryMiddleware option.

  • [Fix]: CustomFunc is processed before applying the aggregate functions in columns.