Release History

By product

Data Access Free 2012.31209

December 11, 2012

OpenAccess ORM


  • Fluent API: Support for Multi-Table Entities - New API and runtime capabilities are introduced in the Fluent Mapping API that would enable mapping more than one table to one class. This mapping is configured through a new overload for the method ToColumn, allowing another table name to be specified
  • Fluent API: More flexibility when configuring properties of type string[] - A way to manipulate the resulting value column in a join table when mapping a string array is introduced. The following methods have been added on a property configuration based on a string[]:
    • .IsUnicode()
    • .IsNotUnicode()
    • .IsUnicode(bool)
    • .WithFixedLength()
    • .WithFixedLength(int)
    • .WithVariableLength()
    • .WithVariableLength(int)
    • .WithInfiniteLength()
  • Context API: New API that allows retrieval and modification of the Guid range for incremental GUID generators - Two methods were introduced for that purpose:
    GetIncrementalGuidRange - Retrieves the range of the last generated incremental Guid value.
    SetIncrementalGuidRange - Sets the range of the next generated incremental Guid value.
  • Context API: CreateDetachedCopy not working properly with List as a parameter - The CreateDetachedCopy methods are now able to handle List<T> without specifying the generic type parameter explicitly
  • Context API: New method GetMemberNames() for quering instance members based on the data state. - A new method was introduced for retrieving the members of a persistence instance based on their data state:
    var members = context.GetMemberNames(product, MemberState.Modified);
    The members collection is populated with all the product members that are modified. If the passed instance is new or detached an exception will be thrown.
  • LINQ: Provide support for HAVING statements - Support for SQL HAVING clause was introduced, so that the following query would use it:
    var usersWithMatchingAnswers = (from pa in profileAnswers
             group pa by pa.UserID into grp
             where grp.Count() == numberOfSelectedItems
             select grp.Key).ToList();


  • Schema Migration: Removing voa_version columns when the concurrency control is not set to version - Schema migration now generates a drop DDL script for voa_version columns when the concurrency control for the given type is changed from Version to other concurrency control mechanism.
  • Model Settings: Class names wrongly capitalized in some cases -
  • Model Settings: Remove Prefix / Suffix for class, property or field should be executed only for the first appearance of the written text in the name. - Removing prefixes and suffixes was wrongly executed several time in case the prefix or the sufix were repeated in the name more than once. Now only the first occurance is removed.


  • 1:1 Associations: Wrong exception when adding objects with 1:1 associations to the context - A "1:1 relation inconsistent" exception message was wrongly shown when a object was added to the context that is part of a 1:n and a 1:1 association where the 1:1 association is eagerly loaded and the n end of the association existed before.
  • Add New Item wizard: Wrong default model name - The default model name was wrongly defined as EntityDiagrams1. It is now changed to EntitiesModel1.
  • ADO API: Type converter not detected for non PersistenceCapable types - When using the ExecuteQuery<T> method, OpenAccess was not able to find the appropriate type converter for a column type number(5,1) that should be translated to a System.Single type.
  • AOS Web API: Generated Delete method throws InvalidOperationException - Fixed the Web API Delete method generated code so it does not throw InvalidOperationException.
  • Data Services: Failure to generate metadata for models with Many to Many associations - If you create a Data Service V2 or V3 based on model that contains many to many association there is an internal server error when trying to get the service metadata.
  • LINQ: Some queries were failing if the context endpoint exposes the persistent class via interface - If a LINQ query was executed against a context endpoint like the following:
    public IQueryable<IMyClass> MyClasses
    get { return this.GetAll<MyClass>(); }
    where the persistent type MyClass implements the IMyClass non-persistent interface, the query could fail with a "Stack empty" exception if it contains multiple joins or a join with grouping.
  • LINQ: Using SqlGeometry data type in a LINQ statement leading to an error - Now properties for columns with the SqlGeometry type can again be used successfully in LINQ queries.
  • MSSQL: Value of timestamp columns not displayed correctly - The value obtained from timestamp columns on MS SQL Server (the versioning column) mapped to an Int64 did not display the value from the database server. The concurrency control behavior is correct, but the displayed values had a different byte order than expected.
  • Runtime: Deleting an object with two shared references using a primary key caused a exception - When a object is deleted that is configured to have a reference shared with a primary key column and a second reference is shared with the same primary key, and the referenced object also has a managed collection, then in some cases OpenAccess was throwing a exception.
  • Runtime: FetchStrategy occasionally returning empty collections - Under some circumstances, a collection that is minimum on level 3 of a fetch strategy is empty. This happens only if another collection in the same path is really empty.
  • SharedFields: Synchronization of composite primary keys with more that one navigational member failing - In scenarios where navigational members share the columns with composite primary keys, the synchronization of these values threw an exception. Example setup: A class has the primary keys ID, ID2, ID3, ID4. The first reference uses ID, ID2, ID3. The second reference uses ID, ID2, ID4. Now the synchronization in such cases is working properly.

OpenAccess SDK

New Samples

  • New Sample: Sofia Car Rental through Web API and Kendo UI - Added a new sample that demonstrates how to integrate Kendo UI and Web API. The new Sofia Car Rental Admin Panel web application features CRUD-enabled Kendo UI grid with pop-up editor and a modal pop-up Kendo Window

Deprecated Samples

  • Sofia Car Rental MVC 3 Razor and Fluent Mapping - Fluent Mapping is now presented with MVC 4 in the updated MVC Forum application

Updated Samples

  • All Telerik components are updated to version Q3 2012
    • KendoUI MVC Extensions (2012.3.1114)
    • RadControls for Silverlight (2012.3.1017)
    • RadControls for WPF (2012.3.1017)
    • RadControls for Windows Forms (2012.3.1017)
    • RadControls for ASP.NET (2012.3.1016)
  • MVC Forum project is migrated to MVC4 and is now using Kendo UI MVC Extensions
  • WCF Data Services with KendoUI sample migrated to Data Services v.5
  • Sofia Car Rental - WCF Data Services sample migrated to Data Services v.5

SDK Browser Enhancements

  • Visual Studio 2012 support is introduced for all samples - There is a separate Visual Studio 2012 solution file deployed with each of the samples.
  • Various small improvements in the Create or Attach Database Dialog

SDK Browser Fixes

  • SofiaCarRental21 database: Cars with duplicating tag numbers - Tag numbers for all the cars are now unique all over the database. Older databases might have to be recreated using the latest verstion of the script SofiaCarRental21.sql in order to avoid errors in the SofiaCarRental samples.
  • Running SQL scripts for database creation was possible on older versions of MS SQL Server then required - SDK Browser's Database Management Tool dialog now filters the available database servers based on their version and the requirements of the current sample. For example instances of Microsoft SQL Server 2005 will not be shown if the example requires Spatial Support that was introduced in Microsoft SQL Server 2008.