Latest Releases

DataObjects .NET 7.0.0 — June, 2021

  • [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<T>, DelayedQueryResult<T> types. DelayedQuery, DelayedQuery<T> and DelayedScalarQuery<T> 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<ParameteScope> and its usage rewoked heavily
  • [main] Parameter and Parameter<T> 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<Tuple>
  • [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<T> and QueryResult<T> types
  • [main] Query.Execute() methods return new type QueryResult<T> which is compatible with old return type
  • [main] QueryEndpoint.Execute() methods return new type QueryResult<T> 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<T>. Functionally it stays the same
  • [main] Prefetch extensions return new type PrefetchQuery<T> 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<TItem> class implements IReadOnlyCollection<> interface now
  • [main] Added DisposableExtensions.DisposeSafelyAsync() methods
  • [main] DisposableSet class implements IAsyncDisposable interface now
  • [main] Queryable<T> class now implements IAsyncEnumerable<T> 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

Get it from: GitHub.com NuGet.Org

DataObjects .NET 6.0.6 — May, 2021

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

Get it from: GitHub.com NuGet.Org

DataObjects .NET 5.0.24 — April, 2021

  • main Fixed rare cases of writing data in wrong column for SingleTable hierarchies
  • main Fixed incorrect EntitySetState.TotalItemCount calculation for ClientProfile
  • sqlserver Fixed incorrect translation of DateTimeOffset.Date part extraction

Get it from: DataObjects.Net Nuget.Org

DataObjects .NET 4.6.9 — July, 2015

  • main Fixed comparison of Keys
  • mysql Provider is no longer used recursive syntax for join

Get it from: DataObjects.Net Nuget.Org

DataObjects .NET 4.5.8 — September, 2013

  • main Fixed invalid key comparison under certain conditions
  • main Fixed EntitySet caching invalid state within DisableSaveChanges() scope
  • main Fixed overflow when storing large TimeSpan values
  • main Fixed invalid default values for SessionConfiguration.DefaultIsolationLevel and SessionConfiguration.Options
  • main Fixed support for referencing connection strings in SessionConfiguration
  • mysql Fixed translation of bitwise operations
  • mysql Fixed translation of DateTime.DayOfWeek and DateTime.DayOfYear

Get it from: DataObjects.Net Nuget.Org