Skip to content

Releases: DataObjects-NET/dataobjects-net

7.1.0 Beta 2

19 Dec 13:42

Choose a tag to compare

7.1.0 Beta 2 Pre-release
Pre-release
  • [main] NET6 support
  • [main] Obsolete CatalogHelper class has been removed
  • [main] Obsolete ReacreateTableHint has been removed
  • [main] Obsolete Session.SelectStorageNode() method is removed
  • [main] Obsolete methods from ArrayExtensions, EnumerableExtensions and QueryableExtensions have been removed
  • [main] Obsolete DeleteDataHint.PostCopy property has been removed
  • [main] Obsolete QueryEndpoint's members have been removed
  • [main] Obsolete Query's members have been removed
  • [main] Obsolete members of DelayedScalarQuery have been removed
  • [main] Obsolete FieldInfo.IsDynalicallyDefined property's been removed (FieldInfo.IsDynamicallyDefined is still there)
  • [main] Changed translation of queries when DomainConfiguration.ShareStorageSchemaOverNodes set to true
  • [main] StorageDriver.Compile(ISqlCompileUnit, NodeConfiguration) became obsolete
  • [main] SqlNodeActualizer became obsolete
  • [main] LockableExtensions.EnsureNotLocked() became obsolete, implementation moved to LockableBase directly
  • [main] TypeInfoCollection.FindAncestor method became obsolete, use new TypeInfo.Ancestor property
  • [main] TypeInfoCollection.FindDescendants methods became obsolete, use new TypeInfo.DirectDescendants/.AllDescendants properties
  • [main] TypeInfoCollection.FindInterfaces methods became obsolete, use new TypeInfo.DirectInterfaces/.AllInterfaces properties
  • [main] TypeInfoCollection.FindImplementors methods became obsolete, use new TypeInfo.DirectImplementors/.AllImplementors properties
  • [main] TypeInfoCollection.FindRoot method became obsolete, use introduced TypeInfo.Root property
  • [main] TypeInfo.GetImplementors(bool) became obsolete, use new TypeInfo.DirectImplementors/.AllImplementors properties
  • [main] TypeInfo.GetInterfaces(bool) became obsolete, use new TypeInfo.DirectInterfaces/.AllInterfaces properties
  • [main] TypeInfo.GetDescendants(bool) became obsolete, use new TypeInfo.DirectDescendants/.AllDescendants properties
  • [main] TypeInfo.GetAncestors() became obsolete, use new TypeInfo.Ancestors property
  • [main] TypeInfo.GetRoot() became obsolete, use introduced TypeInfo.Root property
  • [main] IPropertyValidator.IsImmediate is read-only now
  • [main] PropertyValidator.IsImmediate property has no setter, only init
  • [main] PropertyValidator.ValidateOnlyIfModified property has no setter, only init
  • [main] PropertyValidator.SkipOnTransactionCommit property has no setter, only init
  • [main] RecordSetHeader.OrderTupleDescriptor became nullable to compensate TupleDescriptor's transition to read-only structure
  • [main] IndexInfo.FilterByTypes changed result type to IReadOnlyList
  • [main] IndexInfo.SelectColumns changed result type to IReadOnlyList
  • [main] IndexInfo.ValueColumnsMap changed result type to IReadOnlyList<Pair<int, List>>
  • [main] SqlCompilerConfiguration's DatabaseMapping and SchemaMapping moved to SqlPostCompilerConfiguration
  • [main] Some EventArgs inheritors that were sealed classes transformed to read-only structures
  • [main] DbCommandEventArgs became read-only structure
  • [main] LogEventInfo became read-only structure
  • [main] ILockable.Lock() now has default implementation that refers to ILockable.Lock(true)
  • [main] TupleDescriptor became read-only structure
  • [main] InterfaceMapping became read-only structure
  • [main] ColumnIndexMap became read-only structure and properties changed retun type to IReadOnlyList
  • [main] TopologicalSorter.Sort() methods return IEnumerable, use .SortToList() if results are needed as collection
  • [main] TypeHelper.OrderByInheritance() returns IEnumerable to avoid copying
  • [main] TypeHelper.GetInterfaces() became obsolete, GetInterfacesUnordered() and GetInterfacesOrderedByInheritance() introduced
  • [main] TypeDef.Validators and FieldDef.Validators properties return List
  • [main] SqlCustomFunctionCall and SqlFunctionCall share one base type
  • [main] SqlFunctionCall.Arguments property is IReadOnlyList now and parameters can't be changed after instance creation
  • [main] Xtensive.Sql.Dml.Extensions.IsNullReference() extension method is marked obsolete, use 'is null' operator instead
  • [main] DirectSessionAccessor.GetChangedEntities() result type changed to improve enumeration
  • [main] EntityChangeRegistry.GetItems(PersistenceState) changed result type to improve enumeration
  • [main] EntitySetChangeRegistry.GetItems() changed result type to improve enumeration
  • [main] IgnoreRule now has only one public constructor - parameterless
  • [main] IgnoreRule supports indexes
  • [main] Queries use parameters instead of constant values for type indentifiers within columns list
  • [main] Added DomainConfiguration.PreferTypeIdsAsQueryParameters to choose between contants and parameters for TypeIds
  • [main] ShareStorageSchemaOverNodes option now includes shared query cache when TypeIds as paremters are prefered
  • [main] Introduced TypeInfo.Ancestor property
  • [main] Introduced TypeInfo.DirectDescendants and.AllDescendants properties
  • [main] Introduced TypeInfo.DirectInterfaces and.AllInterfaces properties
  • [main] Introduced TypeInfo.DirectImplementors .AllImplementors properties
  • [main] BitFaster.Caching package reference is updated to 1.0.7
  • [main] No error caused by ambiguity due to new IQueryable extension methods of .Net 6
  • [main] Improved internal logging speed
  • [main] General performance and memory efficiency improvements
  • [reprocessing] DomainBuildErrorEventArgs (not sealed) became read-only structure
  • [reprocessing] ExecuteErrorEventArgs (not sealed) became read-only structure
  • [tracking] TrackingCompletedEventArgs (sealed) became read-only structure
  • [tracking] ITrackingItem ChangedValues property changed return type to IReadOnlyList
  • [tracking] ChangedValue became read-only structure
  • [Web] Removed Obsolete SessionManager and StartupConfigurationExtension

7.1.0 Beta 1

04 Jul 14:54

Choose a tag to compare

7.1.0 Beta 1 Pre-release
Pre-release
  • [main] ThreadSafeCache, ThreadSafeDictionary, ThreadSafeList collections are removed
  • [main] INamedValueCollection and its the only implementer NamedValueCollection are removed
  • [main] ICollectionChangeNotifier, CollectionChangeNotifierEventArgs are removed
  • [main] ArrayUtils and EnumerableUtils are removed
  • [main] ISet interface is removed and all usages are replaced with System.Collections.Generic.ISet
  • [main] Set, SetSlim, ReadOnlySet collections and abstract SetBase class are removed
  • [main] ReadOnlyList, ReadOnlyCollection, ReadOnlyDictionary<TKey, TValue> collections are removed
  • [main] ThreadSafeCached type is removed
  • [main] Triplet and Triplet<TFirst,TSecond,TThird> are removed
  • [main] TypeClassifier, LazyDictionary and FlagRegistry collections are removed
  • [main] DifferentialDictionary and DifferentialDictionaryDifference types are removed
  • [main] CollectionBase is removed
  • [main] StringExtensions.Join() methods are removed
  • [main] CollectionExtensions.ReverseList() method is removed
  • [main] SqlTranslator/SqlCompiler APIs were significantly changed in order to improve memory usage and perfromance
  • [main] Introduced IQueryable.Tag() extensions allowing to add tags to result SQL statement
  • [main] Introduced Session.Tag() method for being able to tag queries within returned TagScope
  • [main] Domain.TagsEnabled is introduced as easier alternative to DomainConfiguration.TagLocation!=TagLocation.Nowhere check
  • [main] NativeTypeClassifier collection now inherits ClassifiedCollection directly
  • [main] FlagCollection.Keys no returns .Net IReadOnlyList
  • [main] CollectionBaseSlim no longer implements IList and ICollection but implements ICollection and IReadOnlyList
  • [main] AggregateException.Exceptions property changed its return type to IReadOnlyList
  • [main] AggregateException constuctors get array of exceptions instead of IEnumerable
  • [main] CopyDataHint.CopiedColumns property changed its return type to IReadOnlyList<Pair>
  • [main] DateHint.Identitites property changed return type to IReadOnlyList
  • [main] UpdateDataHint.UpdateParameter property changed return type to IReadOnlyList<Pair<string, object>>
  • [main] IUpgrader methods now return IReadOnlyList
  • [main] PropertyAccessorDictionary has changed API due to change of the base type and interfaces
  • [main] FullTextIndexDefCollection changed its base type to CollectionBaseSlim
  • [main] HierarchyDefCollection base type changed to CollectionBaseSlim
  • [main] HierarchyDefCollection and TypeDefCollection changed events set due to change of base type
  • [main] SessionConfiguration collection API changed due to changes in base type CollectionBaseSlim
  • [main] IGenerationTerm.Terms property changed return type to IReadOnlyList
  • [main] IProximityTerm.Terms property changed its return type to IReadOnlyList
  • [main] IOperation properties (PrecedingOperations, FollowingOperations, UndoOperations, IdentifiedEntities) changed return type
  • [main] HierarchyInfo.Types property changed return type to IReadOnlyList
  • [main] IndexInfo.Columns property return type changed to IReadOnlyList
  • [main] KeyInfo's Fields and Columns properties changed to ReadOnlyList and IReadOnlyList respectively
  • [main] TypeIndexInfoCollection.RealPrimaryIndexes property return type changed to IReadOnlyList
  • [main] TypeIndexInfoCollection.GetIndexesContainingAllData() method changed its return type to IReadOnlyList
  • [main] TypeInfo members that returned IList changed return type to IReadOnlyList
  • [main] PersistRequestBuilderContext.AffectedIndexes changed return type to IReadOnlyList
  • [main] QueryRowFilterParameterBinding.RowTypeMapping changed return type to IReadOnlyList
  • [main] ProviderInfo.SupportedTypes changed return type to IReadOnlySet
  • [main] SessionHandler.Prefetch/PrefetchAsync changed type of one of incoming parameters from IList to IReadOnlyList
  • [main] ContainsTableProvider.TargetColumns changed return type to IReadOnlyList
  • [main] ColumnCollection is no longer inherited from ReadOnlyList but implements IReadOnlyList
  • [main] ColumnGroupCollection is no longer inherited from ReadOnlyCollection but implements IReadOnlyList
  • [main] ChangeFieldTypeHint.AffectedColumns changed return type to IReadOnlyList
  • [main] RemoveFieldHint.AffectedColumns changed return type to IReadOnlyList
  • [main] RemoveTypeHint.AffectedTables changed return type to IReadOnlyList
  • [main] SchemaComparisonResult.UnsafeActions changed return type to IReadOnlyList
  • [main] UpgradeContext.Modules changed return type to IReadOnlyList
  • [main] UpgradeContext.OrderedUpgradeHandlers changed return type to IReadOnlyList
  • [main] UpgradeContext.UpgradeHandlers changed return type to IReadOnlyDictionary<Assembly, IUpgradeHandler>
  • [main] KeyMapping.Map property changed type to .Net IReadOnlyDictionary<Key, Key>
  • [main] InterfaceMapping's properties of ReadOnlyList type changed the type to .Net IReadOnlyList
  • [main] Node's IncomingConnections and OutgoingConnections properties changed types to IReadOnlyList<NodeConnection<TNodeItem, TConnectionItem>>
  • [main] CompositePreCompiler.Items became readonly field and changed its type to IReadOnlyList
  • [main] SqlCompilerConfiguration's SchemaMapping and DatabaseMapping properties changed return types to IReadOnlyDictionary<string, string>
  • [main] TypeMappingRegistry.Mappings and ReverseMappings properties changed return types to IReadOnlyDictionary<TKey, TValue>
  • main] Xtensive.Orm.Services.QueryTranslationResult became read-only structure
  • [main] Query and ParameterBindings properties of Xtensive.Orm.Services.QueryTranslationResult changed their types and became read-only
  • [main] SqlTranslator.BuildBatch() method changed its parameter from string[] to IReadOnlyList
  • [main] TypeReference, QueryRequest QueryParameterBinding types became read-only structures
  • [main] TypeInfoRef, ColumnInfoRef, ColumnGroup and ComparisonRule types became read-only structures
  • [main] RecordSetHeader constructors changed IEnumerable paremters to IReadOnlyList
  • [main] ColumnGroupCollection no longer takes IEnumerable as parameter of constructor
  • [main] ColumnCollection no longer takes IEnumerable as parameter of constructor, only constructor with IReadOnlyList is available now
  • [main] Overall perfromance improved
  • [main] Fixed issue when Execute/CreateDelayedQuery APIs query cache caused long-living objects
  • [firebird] Added support for Firebird 4
  • [sqlserver] Microsoft.Data.SqlClient is updated to verson 4.0.0
  • [mysql] Added support for MySQL 5.7 and 8.0
  • [mysql] Updated version of Google.Protobuf package

6.0.10

06 May 06:46

Choose a tag to compare

  • [main] Fixed certain cases of NRE happened on Domain build due to views in extracted schema
  • [main] Fixed NotSupportedException appeared on x86 architecture when DateTimeOffset is used in entites

7.0.3

21 Mar 12:34

Choose a tag to compare

  • [main] NodeCollection supports different equality comparers for internal name index
  • [sqlserver] Fixed TimeSpan.Ticks extraction problem
  • [oracle] Fixed scheme extraction for case-sensitive schema names

7.0.2

08 Feb 10:22

Choose a tag to compare

  • [main] Addressed certain issues of enum equality expressions translation that appeared in v7.0.0
  • [sqlserver] Replaced usage of DATEDIFF with DATEDIFF_BIG for v13 and newer
  • [sqlserver] Improved certain operations based on DateTime/DateTimeOffset subtraction for v13 and newer

6.0.9

02 Feb 12:29

Choose a tag to compare

  • [main] Improved enum comparison in queries so result SQL queries won't break index seek if any exists
  • [main] Improved enum comparison in partial indexes
  • [main] Addressed certain issues with with async queries containing .Store() and .In() via temporary table
  • [sqlserver] Fixed Full-text indexes extraction for Azure SQL provider
  • [sqlserver] Correct extraction of custom sequences based on types other than BIGINT

7.0.1

01 Nov 06:13

Choose a tag to compare

  • [main] Changed boolean expression translation to have better index utilization (rebuild of filtered indexes required)
  • [main] Introduced access to DbConnection by using IDbConnectionAccessor implementers
  • [main] Much faster query cache in multithreaded workloads
  • [main] Addressed issue appeared in 7.0.0 when certain items of prefetch graph weren't fetched
  • [main] Fixed certain issues caused by unnecessary check for zombie transactions on commit
  • [main] Improved silent cleanup detection when new and removed Entities happen to conflict by table
  • [main] Improved speed and memory usage of Session creation
  • [main] Overall performance improvements
  • [web] Introduced better way of integration with ASP.NET

6.0.8

28 Oct 10:17

Choose a tag to compare

  • [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

27 Aug 12:48

Choose a tag to compare

  • [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

02 Jun 15:50

Choose a tag to compare

  • [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