Release Notes

Thong Nguyen edited this page Jun 16, 2016 · 5 revisions

@version 1.0.1.842-rc

  • Fix DefaultIfEmpty() not returning singleton list for when DefaultIfEmpty is the final expression in a query (as opposed to a join or aggregate call being the last)
  • Bug fixes to nested orderby/groupby queries being incorrectly optimised in some cases
  • ComputedExpressions support referencing types without namespaces if they are specified as referenced types in config
  • Fix combined DISTINCT TOP/TAKE support for SQL Server
  • Support DeflatedPredicated references including single trip updates and referencing of such objects.
  • New Roslyn based generation of SqlExpressionComparer and SqlExpressionHasher.
  • Support ProjectionExpression caching
  • Fixed bug where ToListAsync() would erase any included collections on return
  • Support UNION and UNION ALL support (Queryable.Union and Queryable.Concat)
  • Removed requirement for DataAccessObjects and PersistedMembers to be abstract
  • ComputedMember language/parser improvements
  • Added support for Queryable.All queries
  • Added async versions of Queryable.Any and Queryable.All queries
  • Added predicate versions of Single, SingleOrDefault, First, FirstOrDefault
  • Support Delete and Delete(predicate) on all compatible Queryables (not just DataAccessObjects)
  • Support GetReference on objects where primary key values are provided using related computed member values
  • Added SumAsync, AverageAsync, MinAsync, MaxAsync methods
  • Better async support when using DataAccessScope
  • Better support for CompleteAsync
  • Functional async support for Postgres
  • Using AsyncRewriter to generate async methods
  • Fixed some nested projection with GroupBy bugs
  • Added DataAccessScope for async commit support
  • Support Include on collections without TransactionScope
  • Lots of Include collection fixes
  • Support joins with multiple join conditions using anonymous types either side of join 'equals'
  • Fixed memory leaks related to lambda projector cache
  • Full support for using Include() on RelatedDataAccessObject properties (collections) including recursive Includes within the collection values.
  • Better/more-complete support for GroupJoins
  • Support for SelectMany returning RelatedDataAccessObjects (Queryable) collections
  • Much improved support/implementation for aggregates and DefaultIfEmpty
  • Improved GroupBy and nested select/projection query support
  • Support implicit joins in many more places that take selectors/predicates such as Queryable.First, Queryable.Single, Queryable.Min, Queryable.Max, Queryable.Count etc.
  • Support join conditions that require implicit joins to resolve
  • Support DataAccessObjects with custom primary keys (inherited from Shaolinq.DataAccessObject instead of Shaolinq.DataAccessObject{T})
  • Support SelectForUpdate, WhereForUpdate on IQueryable
  • Fixed deadlocks in some async calls
  • Fixed inline call to a function returning IQueryable inside a query sometimes fails
  • TransactionContext optimisations
  • Fixed compiled projector lambda cache sometimes not caching due to a bug in SqlExpressionComparer
  • Various async fixes
  • Added NamingTransforms to DataAccessModelConfiguration
  • Fix objects with DAO primary keys using references and anonymous types
  • Better in-scope object caching performance
  • DAO primary keys mostly working with tests

@version 1.0.0.469-rc

  • Better in-scope object caching performance

@version v 1.0.0.465-rc

  • Changed SQL Server string support to use NVARCHAR. Added 'max' CHAR and VARCHAR support
  • Fix ExpressionInterpreter handling of ConvertExpression
  • Better join support
  • Fixed blob (byte[]) support
  • Removed dependency on log4net
  • Better join/groupjoin support
  • Removed need for Shaolinq.Postgres.Shared assembly
  • Various other fixes
  • Made ConnectionTimeout and CommandTimeout optional (uses defaults)
  • Added BackendTimeouts option for Postgres provider
  • Improved performance dramatically by replacing LambdaExpression.Compile with new interpreter and caching compiler

@version 0.9.1.426

  • Fixed bugs with nullable enums with VS2015 compiler

Previous Versions:

  • Fixed bug when using pure interface DataModels and DataAccessObjects
  • Add support for using Equals, ReferenceEquals and CompareTo rather than == operator.
  • Support AutoIncrement on non-primary key properties
  • Support unordered object commits (without the need for explicit flushes) when using databases that don't support for deferrability
  • Allow direct configuration with connection strings
  • Fixed sometimes queries failing if referencing a primary key on a DAO property
  • Fixed Any function sometimes not working
  • Allow DAO types to be defined in other assemblies
  • SQL server provider now always disables enlistment
  • Switch to using ConfigurationManager for configs
  • Added TransactionScopeFactory
  • Removed dependency on EF
  • Support for ConnectionString rather than pure object or XML configuration
  • Added Azure friendly DeleteDatabaseDropsTablesOnly option for SqlServer
  • Added Azure friendly DisabledForeignKeyContext

  • Support OrderBy in sub-queries on SQL server

  • Support for projecting IGrouping when aggregates are both used and not used.
  • Added support for Queryable.Any
  • Simplified ObjectState logic
  • Fixed bug to do with OrderBy and GroupBy in the same query
  • Fixed GroupBy aggregate bug
  • Better support for booleans and decimals in SQL Server
  • Fixed setting null on deflated object properties doesn't the commit update to the DB.
  • Fixed some sometimes unnecessary UPDATE statements executed following INSERT.
  • Fixed left/right joins using DefaultIfEmpty ignored/swallowed in Mono.
  • Fixed implicit joins in selects sometimes not working when working with explicit Linq joins.
  • Native TimeSpan (interval) support for Postgres providers.
  • Fixed negate (-ve) operation not support in Sql92QueryFormatter
  • Fixed nullable enums on Postgres
  • Added DateTime.Add method support.
  • Fixed comparing DAOs and DAO properties to null sometimes not working.
  • Improved Include() support. Can now include off DAOs that are on projected anonymous types.
  • Added base non-generic DataAccessObject class.
  • Added ObjectAlreadyExistsException for more specific UniqueConstraintException cases.
  • OrderBy and GroupBy now support properties that are are defined on related objects (joins are made automatically/implicitly)
  • Better unified cross-provider exceptions for failed unique constraints and when setting related objects that are missing or undefined objects
  • Fixed implicit join in Where lost when a Select follow.
  • Sqlite provider now converts composite primary keys with more than one auto-increment to a single primary key with a unique constraint across all the composites.
  • DataAccessObjects now has GetReference
  • DataAccessObjects GetByPrimaryKey and GetManyByPrimaryKey now support composite and complex primary keys
  • Support for Include() inside select and on IQueryable.
  • Support for Include() when selecting related objects on objects.
  • Improved composite GetByPrimaryKey support in DataAccessObjects collections.
  • Support recursive Include()
  • Support implicit (recursive) joins when predicating or selecting on related objects
  • Composite primary keys made up of objects are now supported.
  • Improved performance
  • Fixed non-aggregate count. Now uses EXISTS where possible