Releases: DataObjects-NET/dataobjects-net
Releases · DataObjects-NET/dataobjects-net
6.0.8
- [main] Resolved DateTimeOffset reading issues for certain queries with JOIN
- [main] Improved compiled queries work with entity parameters
- [main] Coalesce operator with local Entity/Structure instance in it is prohibited to prevent wrong query results
- [main] Ternary operator with local Entity/Structure instance in it is prohibited to prevent wrong query results
- [bulkoperations] Ressuracted check for transaction to prevent unrollbackable changes
6.0.7
- [main] Fixed issue of actual NULL constant being treated as a caching value
- [main] Fixed rare case of infinite loop on batching commands
- [main] Improved VS compatibility by not processing design-time builds
- [main] Introduced IDbConnectionAccessor that gives access to certain stages of connection opening
7.0.0
- [main] Main assembly is built for .Net Core 3.1 only
- [main] CollectionExtensions renamed to CollectionExtensionsEx to prevent ambiguity
- [main] Removed EnumerableExtensions.ToHashset() as it conflicts with .net core equivalent
- [main] Removed EnumerableExtensions.Zip() as it conflicts with .net core equivalent
- [main] Removed obsolete EnumerableExtensions.AsAsyncTask() extensions
- [main] EnumerableExtensions.AsAsync() extension marked obsolete
- [main] EnumerableExtensions.AddOne() extension marked obsolete
- [main] Removed ParameterContextExtensions class
- [main] Removed SessionEventAccessor.EntitySetChanging event since there is no nofications for it
- [main] Removed obsolete Xtensive.Sql.Model.Extractor.ExtractSchema() method
- [main] Removed ParameterScope class
- [main] Removed Delayed, DelayedQueryResult types. DelayedQuery, DelayedQuery and DelayedScalarQuery introduced instead
- [main] Removed both Orm.Providers.EnumerationScope and Orm.Rse.Providers.EnumerationScope
- [main] Rse.Providers.EnumerationContext is no longer inherits Context<Rse.Providers.EnumerationScope>
- [main] Query.ExecuteFuture()/ExecuteFutureScalar() methods renamed with CreateDelayedQuery() to reflect action they do
- [main] QueryEndpoint.ExecuteDelayed() methods renamed with CreateDelayedQuery() to reflect action they do
- [main] Query.Execute() and QueryEndpoint.Execute() changes behavior and actually execute query and holds DbReader opened
- [main] Method Xtensive.Sql.Model.Extractor.ExtractSchemes() became abstract
- [main] ParameterContext class no longer inherits Context and its usage rewoked heavily
- [main] Parameter and Parameter are light-weight and no longer provide value
- [main] Now all CommandFactory.CreateQueryPart() methods require ParameterContext instance
- [main] ContainsTableProvider.SearchCriteria and ContainsTableProvider.TopN have ParameterContext as parameter
- [main] FreeTextProvider.SearchCriteria and FreeTextProvider.TopN properties have ParameterContext as parameter
- [main] IncludeProvider.FilterDataSource property has ParameterContext as parameter
- [main] PagingProvider has ParameterContext as parameter in From, To, Skip and Take properties
- [main] RawProvider.Source and RawProvider.CompiledSource properties have ParameterContext as parameter
- [main] SeekProvider.Key property has ParameterContext as parameter
- [main] SkipProvider.Count property has ParameterContext as parameter
- [main] TakeProvider.Count property has ParameterContext as parameter
- [main] RecordSet class is renamed with RecordSetReader
- [main] ExecutableProvider is no longer implements IEnumerable
- [main] Providers.QueryParameterBinding.ValueAccessor property changes retun value
- [main] Services.QueryParameterBinding.ValueAccessor property changes retun value
- [main] Introduced Domain.BuildAsync() and asynchronous IUpgradeHandler and UpgradeHandler upgrade method-steps
- [main] Introduced StorageNodeManager.AddNodeAsync()
- [main] Introduced asynchronous persist of changes, including manual and autosavings before query and transaction commit
- [main] Added dedicated Prefetch extensions for DelayedQuery and QueryResult types
- [main] Query.Execute() methods return new type QueryResult which is compatible with old return type
- [main] QueryEndpoint.Execute() methods return new type QueryResult which is compatible with old return type
- [main] DelayedQuery created by any of CreateDelayedQuery() methods can be natively executed asynchronowsly or synchronously
- [main] SessionScope is no longer inheritor of Scope. Functionally it stays the same
- [main] Prefetch extensions return new type PrefetchQuery which is compatible with old one return type
- [main] Domain, Session and TransactionScope are IAsyncDisposable implementors now
- [main] Introduced DataReader struct which is both synchronous and asynchronous enumerator
- [main] Both async and regular CommandProcessor.ExecuteTasksWithReader methods changed return type to DataReader
- [main] Both async and regular IProviderExecutor.ExecuteTupleReader methods now return DataReader type
- [main] Both async and sync ExecutableProvider.OnEnumerate methods return DataReader
- [main] Introduced asynchronous equivalents for low-level APIs such as SqlDriverFactory, SqlDriver, Extractor, SqlConnection
- [main] Xtensive.Sql.SqlConnection implements IAsyncDisposable interface now
- [main] Xtensive.Collections.SetBase class implements IReadOnlyCollection<> interface now
- [main] Added DisposableExtensions.DisposeSafelyAsync() methods
- [main] DisposableSet class implements IAsyncDisposable interface now
- [main] Queryable class now implements IAsyncEnumerable interface
- [main] Command became an IAsyncDisposable implementor
- [main] ISqlExecutor now have async analogues for methods
- [main] Prefetching of fields as part of asynchronous query executes asyncronously as well
- [main] Introduced asynchronous analogs for transaction operations in SessionHandlers
- [main] QueryCommand now supports asynchronous operations and implements both IDisposable and IAsyncDisposable
- [main] CommandProcessorContext became an IAsyncDisposable implementor
- [main] SessionBound inheritors now check that session hasn't been disposed
- [main] Improved perfomance of query translation
- [main] Improved memory usage while certain upgrade oprations
- [main] No actions for transaction on TransactioScope disposal for zombied transaction
- [sqlserver] MS SQL Server provider is built for .Net Core 3.1 only
- [firebird] Firebird provider is built for .Net Core 3.1 only
- [mysql] MySQL provider is built for .Net Core 3.1 only
- [postgresql] PosgreSQL provider is built for .Net Core 3.1 only
- [postgresql] Implemented provider for PosgreSQL 12
- [oracle] Main assembly is built for .Net Core 3.1 only
- [sqlite] Main assembly is built for .Net Core 3.1 only
- [bulkoperations] Bulk operations extension is built for .Net Core 3.1 only
- [bulkoperations] Asynchronous operations is now supported
- [localization] Localization extension is built for .Net Core 3.1 only
- [localization] Support for inherited from abstract class localization fields #102
- [logging.log4ne] log4net integration extension is built for .Net Core 3.1 only
- [logging.nlog] Nlog integration extension is built for .Net Core 3.1 only
- [reprocessing] Reprocessing extension is built for .Net Core 3.1 only
- [security] Security extension is built for .Net Core 3.1 only
- [tracking] Tracking extension is built for .Net Core 3.1 only
- [web] Web extension is built for .Net Core 3.1 only
6.0.6
- [main] Obsolete CompilerContainerAttribute.ExtensionType property is removed
- [main] Obsolete BuildingContext.Current and BuildingContext.Demand() are removed
- [main] Obsolete DomainConfiguration.DefaultSectionName field is removed
- [main] Obsolete IOperationSection.Replay() and its implementations are removed
- [main] Obsolete OperationCapturer.Attach(IOperationLogger) is removed
- [main] Obsolete ProviderFeatures.SingleSessionAccess and ServerFeatures.SingleSessionAccess are removed
- [main] Obsolete DomainUpgradeModeExtensions.RequiresInitializingStage() is removed
- [main] Obsolete UpgradeContext.OriginalConfiguration property is removed
- [main] Obsolete UpgradeStage.Initializing is removed
- [main] Obsolete parameterless constructor of RegexConstraint is removed
- [main] Obsolete PropertyValidator.Mode property is removed
- [main] Obsolete ConstraintMode type is removed
- [main] Obsolete EntityExtensions.IsRemoved() is removed
- [main] Obsolete QueryableExtensions.Remove() is removed
- [main] Obsolete Transaction.Open() methods are removed
- [main] Obsolete TransactionalExtensions.InvokeTransactionally() methods are removed
- [main] Obsolete TypeExtensions.GetTypeInfo() methods are removed
- [main] Obsolete VersionCapturer.Attach() is removed
- [main] Obsolete VersionValidator.Attach() property is removed
- [main] Obsolete WellKnown class members are removed
- [main] Obsolete ServerFeatures property is removed
- [main] Fixed possible cases of broken serialization due to comparers
- [main] Fixed rare cases of insert wrong data into some table columns for SingleTable hierarchies
- [main] Exception message about unsupported by storage type became more informative
- [firebird] Another error code that means unique contraint violation is treated correctly
- [firebird] Improved formatting for Float and Double constants within queries
- [firebird] Improved work with DateTime query parameters
- [firebird] Fixed columns' default value extraction
- [mysql] Another error code that means unique contraint violation is treated correctly
- [mysql] Fixed DateTime.DayOfWeek translation
- [oracle] Changed NULLs ordering settings. Now order is the same as in .NET
- [oracle] Improved resolution of TimeSpan literal values on translation
- [oracle] Starting from v11 schema names don't have to be in upper-case as storage allowes names in any case
- [oracle] Improved translation of Math.Ceiling(), Math.Truncate() and Math.Floor()
- [oracle] Fixed byte array fields comparison translation e.g. in Where statements
- [oracle] Improved translation of DateTimeOffset's LocalDateTime, ToLocalTime() and ToUniversalTime() members
- [postgresql] Improved performance of First(), FirstOrDefault() being subqueries
- [postgresql] Improved translation of Math.Ceiling(), Math.Truncate() and Math.Floor() methods
- [postgresql] Skip Commit/Rollback operations for already completed transaction to prevent exception overlaping
- [sqlite] Fixed some foreign key extraction issues
- [sqlite] Improved work with DateTime query parameters
- [sqlserver] Fixed incorrect DateTimeOffset.Date part extraction
- [sqlserver] Improved translation of DateTimeOffset's LocalDateTime and TimeOfDay members
- [reprocessing] ExecuteActionStrategy.Execute doesn't get external session though Session.Current at all
- [reprocessing] Introduced DomainExtension.WithSession() and IExecuteConfiguration.WithSession() methods to pass external session
6.0.5
- [main] EntitySet.Prefetch() now re-fetches items in Client profile and in certain transaction isolation levels
- [main] Prefetch extension re-fetches EntitySet items in Client profile and in certain transaction isolation levels
- [main] SessionScope is not derrived from Scope but stand alone class. Functionality remains the same.
- [main] Improved session activation mechanism to work with asynchronous Session opening
- [main] Fixed SimpleCommandProcessor internal command allocation issue which caused 'swollowing' of genuin exception
- [main] Fixed certain cases of incorrect temporary table column structure while using grouping
- [main] Correct command disposal by CommandProcessors
- [mysql] Updated client library package
- [log4net] Updated log4net package
6.0.4
- [main] Session.SelectStorageNode() marked as obsolete
- [main] Removed obsolete static Session.Open() methods
- [main] Domain.OpenSessionAsync() methods can only open a session to default storage node now
- [main] Introduced StorageNode.OpenSession() and StorageNode.OpenSessionAsync() method sets to open sessions to the node
- [main] Fixed issue when DirectPersistentAccessor.SetReferenceKey() was unable to set reference for saved Entities
- [main] Hints which path became irrelevant during upgrade actions generation no longer cause error
- [main] Fixed certain translation issues of interface members usage for non-perstent types initialization within queries
- [main] Improved translation of certain subqueries used in LINQ
- [main] Ported changes of DO 5.0 which were missing (from 5.0.18 up to 5.0.21)
- [postgresql] Retuned support for DateTimeOffsets
- [postgresql] Fixed issue when certain DateTimeOffsets operations result couldn't be used for parts extraction e.g. TotalMilliseconds
- [bulkoperations] Addressed wrong table alias assignment issue for Bulk Update and Bulk Delete
6.0.3
- [main] Provider for MS SQL Server was branched out into a separate project
- [main] Events for changes cancelling ported from 5.0.x
- [main] QueryCommand now implements IDisposable interface
- [main] TupleDescriptor no longer implements IList
- [main] TupleDescriptor.GetCommonPartLength(TupleDescriptor) method was removed
- [main] TupleDescriptor.IsValueType(int) method was removed
- [main] KeyExpression.KeyFields property changed its return type from ReadOnlyCollection to IReadOnlyList
- [main] One of the TupleExtensions.CopyTo() methods changed 'map' parameter type from int[] to IReadOnlyList
- [main] WrappingTransformTupleBase.Arguments property changed the return type from object[] to IReadOnlyList
- [main] TransformedTuple.Arguments property changed the return type from object[] to IReadOnlyList
- [main] MapTransform.SingleSourceMap and MapTransform.SingleSourceMap properties changed the return type from int[] to IReadOnlyList
- [main] Intoduced protected MapTransform.SetMap() and MapTransform.SetSingleSourceMap() methods to set correspoding properties value
- [main] One of the MapTransform constructors changed its 'map' parameter type from int[] to IReadOnlyList
- [main] CutInTransform.Sources property changed the return type from TupleDescriptor[] to IReadOnlyList
- [main] CombineTransform.Sources property changed the return type from TupleDescriptor[] to IReadOnlyList
- [main] SelectProvider.ColumnIndexes property changed the return type from int[] to IReadOnlyList
- [main] IncludeProvider.FilteredColumns property changed the return type from int[] to IReadOnlyList
- [main] Introduced ListExtensions.IndexOf(this IReadOnlyList, T item) extensions method
- [main] ComparisonRules.Composite property changed its return type from ComparisonRules[] to IReadOnlyList
- [main] Constructors of SelectProvider and IncludeProvider changed type of some of their parameters from int[] to IReadOnlyList
- [main] ArrayExtensions.Copy() methods marked [Obsolete] and will be removed in future
- [main] Segment struct became readonly
- [main] SqlConnection was extended with abstract ClearUnderlyingConnection method
- [main] BindingCollection<TKey, TValue> now implements IReadOnlyCollection<KeyValuePair<TKey, TValue>> instead of IEnumerable<KeyValuePair<TKey, TValue>>
- [main] Several SqlDml.Join methods changed their signature by using parameters of IReadOnlyList<> inteface instead of IList<> interface
- [main] General performance and memory usage improvements
- [main] Query translation performance improvements
- [main] Materializer can work with non-private members
- [main] Improved work of In/Contains over local collections with collections of Keys
- [main] Fixed certain cases when system attribute [OverrideFieldName] may cause problems
- [main] Fixed concurrency issues
- [main] Fixed possible corruption EntityChangeRegistry contents
- [main] Fixed issue when reference synchronization couldn't clear reference of removing entity
- [main] Fixed issue when field value validation can force lazy-load fields to be fetched
- [main] Fixed cases when extra SELECT wrapping appeared just because of TypeId constant column
- [sqlserver] Updated version of referenced System.Data.SqlClient
- [bulkoperations] Made possible to use Contains() for collections in Bulk operations as well as In()