News, examples, tips, ideas and plans.
Thoughts around ORM, .NET and SQL databases.

Showing posts with label releases. Show all posts
Showing posts with label releases. Show all posts

Friday, October 06, 2017

DataObjects.Net 5.0.16 Beta 1

We've released a new version recently. Here are the changes we have made:

[main] Added constraint option allowing to skip the constraint if the field isn't changed
[main] DifferentialTuple.Merge() operation no longer causes StackOverflow exception
[main] Fixed certain cases of foreign key absence for reference fields of structures
[main] Fixed translation of enum value as default field value
[sqlserver] Fixed extraction of information about indexes from database

As usual you can download it from our official website or install it from Nuget library

Complete changes description is below.

Thursday, September 22, 2016

DataObjects.Net 5.0.11 RC


We released DataObjects.Net 5.0.11 RC this Wednesday. The list of changes is below:

[main] Full-text indexes no longer cause domain building error in DomainUpgradeMode.Skip mode
[main] Fixed temporary keys remap which showed up in previous version
[postgresql] Updated version of client library
[postgresql] Added support for DateTimeOffset


As usual you can download it from our official website or install it from Nuget library

Friday, February 28, 2014

DataObjects.Net 5.0 Beta 2

This is the next step in our road to the upcoming major version of DataObjects.Net.

Changes in Beta 2:

  • Added support for VB.NET model assemblies
  • Increased compilation performance
  • Fixed problem with automatic license activation
  • Improved logging API
  • Removed obsolete Transaction.OpenAuto() methods
  • Session closes connection as soon as the last transaction completes
  • New Session option NonTransactionalReads.
  • Added support for Contains operation over keys collection
  • Added support for persistent fields of DateTimeOffset type
  • Key.TypeInfo no longer relies on implicit session
Also you may be interested in changes in DataObjects.Net 5.0 Beta 1.

Download

Just as always, releases are available from NuGet gallery.

Tuesday, January 07, 2014

DataObjects.Net 4.6.5

Changes in DataObjects.Net 4.6.5:


[main] Fixed version validation for entities without explicit version columns
[main] Fixed version validation for decimal version fields
[main] Optimized aggregate translation in complex scenarios
[main] Fixed problem with access to nullable enum columns in final projection
[main] Fixed problem with missing calculated columns in final projection
[main] Fixed materialization of delayed queries with parameters in final projection
[main] Implemented merging of duplicated query parameters
[main] Improved handling of unique index conflicts during persist
[main] Implemented query batching when ValidateEntityVersions option is enabled
[sqlserver] Optimized queries that are executed during driver initialization
[sqlserver] Added support for full text data type columns
[sqlserver] Added ignoring of filetable objects during upgrade and schema validation
[sqlserverce] Fixed translation of DateTime operations in LINQ
[sqlite] Fixed translation of DateTime operations in LINQ
[mysql] Fixed translation of DateTime operations in LINQ

Download

Just as always releases are available at our site and NuGet gallery.

Monday, September 30, 2013

DataObjects.Net 4.5.8 and 4.6.4

Finally, the new version of DataObjects.Net is out. Traditionally, we are releasing both major versions: 4.5.x & 4.6.x,

Changes in both DataObjects.Net 4.5.8 and 4.6.4:


[main] Added QueryEndpoint.Items() method for querying EntitySets within compiled queries
[main] Added support for DateTime.AddXxx() methods in LINQ translator
[main] Added support for System.Linq.EnumerableQuery in LINQ translator
[main] Fixed invalid key comparison under certain conditions
[main] Fixed EntitySet caching invalid state within DisableSaveChanges() scope
[main] Fixed incorrect column references in generated SQL for certain queries
[main] Fixed querying for types with enum type discriminators
[main] Fixed querying for types with enum key fields
[main] Fixed locking of entity that could not be persisted at the moment for some reason
[main] Fixed handling of temporary tables query with zero columns
[main] Fixed translation of GroupJoin() with temporary tables
[main] Fixed translation of Distinct() after Select()
[main] Fixed translation of ThenBy() that implicitly adds joins
[main] Fixed support for LINQ member compilers that return nullable values
[main] Fixed translation of as with subquery operand
[main] Fixed concurrent access issues with NameBuilder.GetHash method
[main] Fixed incorrect result of FirstOrDefault/SingleOrDefault in certain subqueries
[main] Optimized translation of String.IsNullOrEmpty() method
[main] Reduced number of casts in generated SQL when accessing enum fields
[main] Automatically handle namespace-only renames during upgrade
[main] PostSharp is upgraded to version 2.1.7.30
[postgresql] Npgsql is upgraded to version 2.0.12.1
[mysql] MySQL library is upgraded to version 6.7.4
[mysql] Fixed translation of bitwise operations
[mysql] Fixed translation of DateTime.DayOfWeek and DateTime.DayOfYear
[firebird] Firebird library is upgraded to version 3.0.2.1
[sqlserver] Fixed reading of large SqlDecimal values

Changes specific to DataObjects.Net 4.6.4:

[main] Added version validation on persist via SessionOptions.ValidateEntityVersions
[main] Added DomainConfiguration.ConnectionInitializationSql option
[main] Added support for Enum.HasFlags method in LINQ
[sqlite] Added support for :memory: data source
[main] Fixed regression in Session.Query.ExecuteDelayed introduced in 4.6.4 RC
[main] Fixed redundant delete queries when clearing key generator tables during upgrade
[main] Fixed NRE in StorageMappingBuilder when persistent type does not have a namespace
[main] Store partial index filter definitions in Metadata.Extension table instead of relying on information schema
[main] Improved diagnostic messages for multimapping configurations when database/schema is not found
[main] Improved diagnostic message when non-LINQ method is called within Session.Query.ExecuteDelayed
[sqlite] Fixed extraction of multi-column primary keys
[sqlite] SQLite library is upgraded to version 1.0.87.0
[sqlserver] Fixed incorrect SQL for table rename in non-default database

Download

Just as always releases are available at our site and NuGet gallery.

Monday, February 04, 2013

DataObjects.Net 4.5.7 and 4.6.3 are released

This is a huge bug-fix release. Everybody is encouraged to upgrade.

DataObjects.Net 4.5.7 and 4.6.3:

DataObjects.Net 4.6.3 only:

  • Fixed incorrect column order in queries after certain schema upgrades
  • Added DomainConfiguration.NativeLibraryCacheFolder setting
  • Significantly improved initialization time for Xtensive.Tuples infrastructure

DataObjects.Net Extensions 4.6.3 and 4.5.7:

Bulk operations extension
  •  Remove extra command execution under certain scenarios
Reprocessing extension
  • Improve compatibility with DisconnectedState
  • Don't use nullable types in ReprocessAttribute properties

DataObjects.Net Extensions 4.6.3 only:

Localization extension
  • Improved examples in readme.txt
Tracking extension
  • Fixed incorrect handling of partially loaded entities

DataObjects.Net LinqPad driver 4.6:

Download

Just as always releases are available at our site and NuGet gallery.

Monday, November 19, 2012

DataObjects.Net 4.5 and 4.6 are updated

Bug fixing updates for DataObjects.Net 4.5 and 4.6 are available.

Here is the list of changes for both versions:
  • Fix translation of predicates similar to (object) NullableBool == (object) null
  • Fix translation of Union() over boolean columns under certain conditions
  • Don't enforce implicit non-nullable/length constraints in inconsistent sessions
  • Import DataObjects.Net.targets conditionally when using NuGet package
  • Make UpgradeHandler.IsFieldAvailable virtual
  • Treat SQL Server errors 3966 and 3971 as serialization failure

The following fixes apply to 4.6.1 only:
  • Fix loading/storing of the domain model when multi-database mode is enabled
  • Fix assignment of MappingSchema/MappingDatabase for persistent interfaces
  • Improve exception message for missing default schema in domain configuration
Just as always you can get new releases at our download site or NuGet gallery.

DataObjects.Net extensions are not updated yet. You could use previous versions of them which are fully compatible with this release.

Thursday, October 11, 2012

DataObjects.Net Extensions update

DataObjects.Net Extensions for DataObjects.Net 4.5.5 and 4.6.0 are available.

Changes

  •     Added missing xmldocs for BulkOperations extension
  •     New Tracking extension (DataObjects.Net Extensions 4.6.0 only)

Tracking extension

Tracking extension provides tracking/auditing functionality on Session/Domain level.

To use it:

1. Add reference to Xtensive.Orm.Tracking assembly

2. Include types from Xtensive.Orm.Tracking assembly into the domain:
<Xtensive.Orm>
  <domains>
    <domain ... >
      <types>
        <add assembly="your assembly"/>
        <add assembly="Xtensive.Orm.Tracking"/>
      </types>
    </domain>
  </domains>
</Xtensive.Orm>

3. To track changes on Session level obtain an instance of ISessionTrackingMonitor through Session.Services.Get<ISessionTrackingMonitor>() method To track changes on Domain level (from all sessions) obtain an instance of IDomainTrackingMonitor through Domain.Services.Get<IDomainTrackingMonitor>() method

4. Subscribe to TrackingCompleted event. After each tracked transaction is committed you receive the TrackingCompletedEventArgs object.

5. TrackingCompletedEventArgs.Changes contains a collection of ITrackingItem objects, each of them represents a set of changes that occured to an Entity within the transaction committed.

Example

1. Subscribe to ISessionTrackingMonitor/IDomainTrackingMonitor TrackingCompleted event
var monitor = Domain.Services.Get<IDomainTrackingMonitor>();
monitor.TrackingCompleted += TrackingCompletedListener;

2. Do some changes to persistent entities
using (var session = Domain.OpenSession()) {
  using (var t = session.OpenTransaction()) {
    var e = new MyEntity(session);
    e.Text = "some text";
    t.Complete();
  }
}

3. Handle TrackingCompleted event call and do whatever you want with tracked changes.
private void TrackingCompleted(object sender, TrackingCompletedEventArgs e)
{
  foreach (var change in e.Changes) {
    Console.WriteLine(change.Key);
    Console.WriteLine(change.State);

    foreach (var value in change.ChangedValues) {
      Console.WriteLine(value.Field.Name);
      Console.WriteLine(value.OriginalValue);

      Console.WriteLine(value.NewValue);
    }
  }
}

Sync extension

Sync extension was planned for 4.6 release. We decided that it is not production ready and postponed it until 4.7.

Download

Monday, October 08, 2012

DataObjects.Net 4.6 goes final

I'm glad to announce that DataObjects.Net 4.6.0 is released. This post provides an overview of changes and improvements in 4.6 version. They would be explained with more details in future posts.

SQLite provider

SQLite has joined the list of supported databases.

Quick domain configuration example:

    <domain name="mySqliteDomain"
            providerName="sqlite"
            connectionString="Data Source=mydatabase.db" />


You'll also need to add reference to Xtensive.Orm.Sqlite.dll assembly in your project.

Mapping to multiple schemas and even databases

Since 4.6 it's possible to map persistent model to multiple schemas and databases.

The following examples maps model to two schemas based on entity namespaces:

    <domain name="myDomainWithTwoSchemas" defaultSchema="dbo">
        <mappingRules>
            <rule namespace="MyApp.Model.Foo" schema="foo" />
            <rule namespace="MyApp.Model.Bar" schema="bar" />
        </mappingRules>
    </domain>


I'll cover multi-mapping configurations in future posts.

Upgrade improvements

In this version we heavily reworked upgrade to be more fast and reliable. First major improvement is extensive usage of parallel computations, so now DataObjects.Net will perform some actions in parallel to build domain faster. Second major improvement is wrapping all upgrade actions in a single transaction if database supports transactional DDL. Previous versions of DataObjects.Net used two transactions in Perform and PerformSafely modes because additional upgrade domain was created.

Simplified key generator API

In DataObjects.Net 4.6 we changed API for key generators (both standard and user-written) to be more simple and intuitive. For example for creating custom key generator table or sequence you no longer need to write domain service. Simple [KeyGenerator(Name = "Foo")] will work just well. I'll explain new key generator API in details in future posts.

Final words

Just as always you can download packages from our site or NuGet gallery.

DataObjects.Net 4.5.5 released

DataObjects.Net 4.5.5 is made available. This is bug-fixing release for 4.5 branch. List of resolved problems could be found here. Just as always you can download packages from our site or NuGet gallery.

Monday, August 06, 2012

DataObjects.Net Extensions 4.5.3

DataObjects.Net Extensions are updated to the latest version.

What are these so-called extensions?
They are small projects that extend standard functionality of DataObjects.Net core. Version 4.5.3 contains of the following extensions:
Each of them has a corresponding nuget package so they can be installed separately or in any combination. Using NuGet is a recommended way of installing the extensions.


DataObjects.Net Extensions are published on CodePlex with source code opened. You may also want to check the documentation before start using them. The extensions are maintained by Xtensive engineers and by volunteers from DataObjects.Net community.

Changes

  • [Security] Fix threading issues with hashing services
  • [Localization] LocalizationModule is added. It automatically calls TypeLocalizationMap.Initialize(Domain) during Domain build.
  • [BulkOperations] Support for single insert operation is added
  • [BulkOperations] Fix for drivers that don't support UpdateFrom and DeleteFrom constructs

Download

Roadmap

There are several new extensions that are now being developed and tested:
  • Xtensive.Orm.Sync - Microsoft Sync framework support (expected in 4.6 version)
  • Xtensive.Orm.Tracking - a tracking monitor that tracks changes in entities and notify you about them. Good for auditing purposes and similar tasks. (expected in 4.6 version)
  • Xtensive.Orm.Security.Web - ASP.NET Membership provider & Role provider (expected in 4.5.4 version, contribution of Carl Healy)
  • Here could be your extension - Contribute! Obtain DataObjects.Net license for free!

Thank you!

Friday, August 03, 2012

DataObjects.Net 4.5.4 RC 2

Today we are publishing the next release candidate for the upcoming version of DataObjects.Net.

Changes

  • [main] Exceptions on IoC container finalization (usually they appear because dependent objects are already finalized) are now suppressed
  • [main] Fixed NullReferenceException in EnsureIsFetched method in SessionOptions.ReadRemovedObjects mode
  • [main] Entity.IsMaterializing property wasn't handled properly
  • [main] Transaction opening is fixed for SessionOptions.ClientProfile

Download

Friday, July 13, 2012

DataObjects.Net 4.5.4 RC

Today we are publishing the next release candidate for the upcoming version of DataObjects.Net.

Changes

Changes in 4.5.4 RC:

[main] Fixed comparion of Key fields in interaces in LINQ queries under certain scenarios
[main] Visual experience of License Manager has been improved
[main] Fixed incorrect handling of RemoveFieldHint under certain scenarios
[main] Fixed incorrect behavior in DisconnectedEntityState.UpdateOrigin method

Download

Monday, July 02, 2012

DataObjects.Net 4.5.3 is released

Today we are publishing the final version of DataObjects.Net 4.5.3.

Changes

Changes in 4.5.3 comparing to 4.5.3 RC 4:

[main] Fix NullReferenceException under certain validation scenarios
[main] Fixed memory leak in Domain.Build() process

Download

DataObjects.Net 4.4.3 is out

Today we are publishing the final version of DataObjects.Net 4.4.3.

Changes

Changes in 4.4.3 comparing to 4.4.3 RC 2:

[main] Fixed memory leak in Domain.Build() process
[main] RemoveFieldHint, ChangeFieldTypeHint are now correctly handled for Structure fields

Download

Friday, June 22, 2012

DataObjects.Net 4.5.3 RC 4

Today we are publishing the next release candidate for the upcoming version of DataObjects.Net.

Changes

Changes in 4.5.3 RC4:

[main] Fix POCO materialization when subqueries are used
[main] Fix translation of multiple aggregate subqueries when calculated columns are used
[main] Throw descriptive exception when RenameTypeHint has invalid old type name
[main] Improve detection of serialization failure errors for SQL Server

Download

Thursday, June 14, 2012

DataObjects.Net 4.5.3 RC 3

Today we are publishing the next release candidate for the upcoming version of DataObjects.Net.

Changes

Changes in 4.5.3 RC3:

[main] Finally, change log is included in distribution =)
[main] RemoveFieldHint, ChangeFieldTypeHint are now correctly handled for Structure fields
[main] Correctly skip full-text indexes if storage does not support them
[mysql] Fixed index direction support for MySQL
[mysql] Improved translation of DateTime.Date for MySQL
[mysql] Fixed incorrect translation of Math.Truncate and Decimal.Truncate for MySQL
[mysql] Fixed incorrect translation of String.IndexOf for MySQL
[mysql] Fixed mapping of Single and Double types for MySQL
[mysql] Fixed schema extraction with case-sensitive collation for MySQL
[postgresql] Hex format for byte array literals is used for PostgreSQL 9.0 and later

Changes in 4.5.3 RC2 (wasn't officially announced):

[main] Validation now works in ClientProfile
[main] Fixed various errors with certian EntitySet usage scenarios in ClientProfile
[main] Fixed "Scope can't be disposed" error under certain query enumeration scenarios

Download

Saturday, May 05, 2012

DataObjects.Net 4.5.1 is out

We are releasing DataObjects.Net 4.5.1. This is minor update, it contains changes, described in details in the previous announcements:
There are also small fixes in this version:
  • Fixed bug with NullReferenceException in rare cases during struct materialization
  • Added DomainConfiguration.SchemaSyncExceptionFormat property for precise control over the correspondent exception format
DataObjects.Net 4.5.1 is available for download from the website and as NuGet packages.

Monday, April 23, 2012

DataObjects.Net 4.5.1 RC

DataObjects.Net 4.5.1 Release Candidate is available.

This update includes features that we didn't have time to implement in 4.5.0 as well as bug fixes.
Installer and .zip can be downloaded here.

NuGet packaging

DataObjects.Net got official NuGet packages.

Currently they are pre-release in terms of NuGet packaging. This means they won't be shown by default. To install such package you'll need to change default package filter:





To get main library (Xtensive.Orm) you'll to need install Xtensive.Orm package from package browser. Or if you prefer to use package manager console:


 PM> Install-Package Xtensive.Orm -IncludePrerelease


Each storage provider has its own package, that depends on main library.
Here are the names of all available packages:
  • Xtensive.Orm - main library
  • Xtensive.Orm.Firebird - provider for Firebird (incorrect dependency, temporary removed from listing)
  • Xtensive.Orm.MySql - provider for MySQL
  • Xtensive.Orm.SqlServerCe - provider SQL Server Compact (3.5 only)
  • Xtensive.Orm.Oracle - provider for Oracle
  • Xtensive.Orm.log4net - logging provider for log4net
For most packages all dependencies will be installed from NuGet automatically, exceptions are SQL Server Compact and Oracle providers. PostgreSQL provider currently is not available due to old assembly version of Npgsql library in corresponding package. This is to be solved in future updates.

Portable mode for license manager

License manager now supports so-called "portable" mode.

By default license manager stores license files in %ALLUSERSPROFILE%\DataObjects.Net folder.
For recent Windows versions it is typically C:\ProgramData\DataObjects.Net.

Sometimes it is desirable to have license files somewhere relative to your sources. Now such layout could be accomplished with ease.

Suppose you have DataObjects.Net in a subfolder of your project. For example let's say you have DO.Net in C:\Projects\MyProject\Libraries\DO.Net.

To activate portable mode you need to create folder with name Licenses on the same level as Tools and Libs and DataObjects.Net.targets. So in our example it should be C:\Projects\MyProject\Libraries\DO.Net\Licenses.

After this folder is created license manager will automatically read and write licenses in that folder.

No hardware licenses for Ultimate customers

Previous versions of DO.Net required you to have hardware license key for each computer. But if you have Ultimate subscription you are allowed to run it on unlimited number of machines. Hardware license key is however still were required.

This is no longer the case since 4.5.1. If you have valid license key for Ultimate edition no hardware license key is required. Just install company license key and you are ready to rock with DO.Net.

Bug fixes

  • Fixed complex indexes extraction in Oracle provider
  • Fixed translation of TimeSpan.Ticks property for Oracle and PostgreSQL
  • Correctly install templates for non-English Visual Studio

Migration path

This is minor update, no source code changes or recompilation required.
Installer will automatically uninstall any existing DataObjects.Net 4.5.x.
If you want to play with 4.5.1 RC and keep your 4.5.0 installation it's better to use .zip package instead.

Friday, April 13, 2012

DataObjects.Net 4.5 RTM and Big Spring Sale

DataObjects.Net 4.5 RTM

Today we are proudly releasing the long awaited DataObjects.Net 4.5 which includes lots of exciting features and updates. The major features are:
  • Provider for MySQL
  • Provider for Firebird
  • Provider for JustOneDB
  • LINQPad driver
  • DataObjects.Net Extensions (Security layer, Bulk operations, Reprocessible tasks)
  • PostgreSQL 9.1 support
  • SQL Server 2012 support
  • Ultra-fast topological sorter
  • Decreased memory consumption
All of them were described in detail in these posts:
DataObjects.Net 4.5 is waiting for you on our downloads page.

The Big Spring Sale

Due to the DataObjects.Net 4.5 release we are glad to announce that the Big Spring Sale has started on the 13-th of April and will last till the end of the month. During this time you get 50% off any edition of DataObjects.Net. To apply this 50% special to your order, just enter DO45PROMO coupon code at the product checkout page. Save up to 1250 euros!

Should you have any questions, please email to sales@dataobjects.net.