INFRALUTION VIRTUAL DATA OBJECTS RELEASE NOTES  
Version 1.5.3
Updated installer to install controls in toolbox for Visual Studio 2012, 2013 and 2015
Updated samples for Visual Studio 2012, 2013 and 2015
Fixed mispelt AbsolutePositionNotSupportedException
Version 1.5.2
Fixed possible Cryptographic exception on some machines when validating license.
Version 1.5.1
Added support for Windows 8 and Visual Studio 11 
Version 1.5.0
Changed Virtual Data Objects Help/Documentation to be standalone (CHM) rather than integrated with the Microsoft Visual Studio 2005/2008 help system.   This enables the Virtual Data Objects documentation to be viewed when using Visual Studio 2010 (which uses a different help system to VS2008) and also means Visual Studio is no longer required to view the help documentation.
Added Visual Studio 2010 Sample Projects
Fixed issues with installing and running samples under 64 bit Windows.
Fixed possible delay (under some circumstances) while validating license
Version 1.4.0
Converted project source code to VS2005 (this means that Version 1.4.0 and later can not be used with VS2003)
Changed installer to add Visual Studio 2008 sample projects and handle installation of Virtual Data items in VS2008 toolbox
Version 1.3.2
Fixed potential issue with validation of the Virtual Data license key on some machines.
Version 1.3.1
Changed location of license file to common application data directory.   This avoids the need to re-install the license when installing updates of Virtual Data.
Fixed runtime license check to handle case where no EntryAssembly is defined.
Version 1.3.0
Changed VirtualRecordset.CreateVirtualRecord method to take an ADODB recordset as a parameter (rather than an index).  This allows derived classes to determine the type of VirtualRecord object to create based on the content of the ADODB record.  This makes it much easier to map inheritance relationships onto the database schema.
Made VirtualRecord.Initialize and VirtualRecord.InitializeNew methods public to allow them to be called by derived VirtualRecordset classes.
Added overloaded VirtualRecord.GetValue and VirtualRecord.GetStringValue methods that allows you to specify whether null string values should be converted automatically to Empty strings.   This can be useful where you need to distinguish between null database entries and empty entries.
Fixed issue where calling VirtualRecord.Update more than once for a new record caused an exception
Added AbsolutePositionNotSupported exception and check for this condition when the recordset is first created.   Note that ODBC drivers accessed through ADO do not support AbsolutePosition unless the CursorLocation is set Client.
Fixed issue in VirtualConnection.RefreshRecordsets where an InvalidOperation exception could be raised in some circumstances where application code is reentrant.
Version 1.2.1
Added CursorLocation property to VirtualConnection.  Previously to set the cursor location (client or server) you had to set it on the underlying ADODB.Connection.   The new CursorLocation property allows you to have two VirtualConnections sharing a single underlying ADODB.Connection each having a different cursor location.   This can be useful when a database doesn't support bidirectional server side cursors for certain query types.
Added additional constructors for VirtualConnection that allow you to specify the CursorLocation, CursorType and LockType
Improved error handling and documentation when the database provider doesn't support bidirectional cursors that implement the RecordCount property.  VDO now throws the RecordCountNotSupported exception in this case.
Fixed issues when closing VirtualConnections that share an underlying ADODB.Connection
Version 1.2.0
Added GroupBy and Having properties to VirtualRecordset to allow more advanced queries
Fixed issue in VirtualConnection.InitializeRecordsetProperties causing an exception with some ADO providers (PostgreSQL)
Changed to use stronger licensing keys.   This means that keys issued prior to Version 1.2 will no longer work with this version.   Infralution will issue new keys free of charge to existing Virtual Data customers on request.
Version 1.1.3
Modified VirtualRecordset.Count property so that it only retreives the underlying recordset if it has been refreshed.  This can greatly improve the performance of VirtualRecordsets when using large numbers of open virtual recordsets (in for instance VirtualTree).  
Fixed VirtualRecordset.Refresh so that it removes recordsets from the cache that have the same Select and Where clauses forcing these recordsets to also be updated.
Version 1.1.2
Added support for restricted licenses which only work for the Infralution License Tracker application
Added seperate VS2005 Samples
Changed Simple Data Binding samples to illustrate using Design Time configuration of connections using a System DSN data source
Version 1.1.1
Changed installer so that Setup can be run on systems that have the release version 2.0 of .NET framework installed only.
Version 1.1.0
Added LockType and CursorType properties to VirtualConnection to allow these properties to be set for recordsets created using the connection.
Changed the default CursorType to adOpenKeyset.  This is required to be able to retrieve SQLServer Identity (autonumber) fields for new records once the record is updated.
Added InitializeRecordsetProperties method to VirtualConnection to allow dynamic recordset properties to be set.   Default implementation sets the "Preserve on Commit" and "Preserve on Abort" properties to true (if available).  These are required for SQLServer recordsets to remain valid once they have been committed.
Fixed VirtualRecord.GetValue to return EmptyStrings instead of nulls for empty SQLServer string fields.  This simplifies databinding to VirtualRecords because many controls cannot bind to null values.
Version 1.0.2
Fixed licensing so that the unlicensed evaluation DLL can be used in ASP.NET projects.   Previously this would cause an exception when the DLL attempted to display the license install dialog at runtime. 
Version 1.0.1
Fixed bug in VirtualConnection constructor which meant that the RecordsetCacheSize was not set to the given parameter value (always defaulted to 20).
Version 1.0.0
Initial Release