Release History

By product

Data Access Free 2013.1219

February 19, 2013


  • Multi-Diagrams support in Visual Designer - Support for multiple diagrams for a single Domain Model is added to the Visual Designer. Thus, large models can be split between separate diagrams allowing an easier management of complexity and a faster workflow.
  • Data Streaming - Data streaming is now supported in OpenAccess ORM. It can be used for scenarios that involve reading and writing large data files to the database. A new data type BinaryStream is made available which optionally replaces the byte array in order to make use of the new streaming capabilities.
  • Artificial Types: Context based Artificial Data API - New Context-level API for creating, querying and manipulating entities enhanced with artificial fields, artificial entities and also non-artificial entities.
  • ASP.NET Dynamic Data wizard: Integration with RadControls - New option in the Dynamic Data wizard is implemented, allowing it to generate the List pages of a Dyanamic Data application using DynamicRadGrid instead of the default .NET GridView.
  • Add OpenAccess Service: Improvements in generation of Data Services to support any version of Microsoft.Data.Services - The usage of Telerik.OpenAccess.DataServices assembly is now replaced by including the code files for Data Services in the target project. This way that can be used with any version of WCF Data Services that is supported by OpenAccess ORM without having to reference different assemblies.
  • Context API: GUID Ranges configuration - New methods are added to the Context API to allow retrieving and modifying the client-side incremental GUID generation range
    • GetIncrementalGuidRange - Retrieves the range of the last generated incremental GUID value.
    • SetIncrementalGuidRange - Sets the range of the next generated incremental GUID value.
  • Context API: ObjectConstructed event in OpenAccessContext.Events - A new event is raised each time OpenAccess runtime creates an instance of an entity type after the instance has been loaded from the database.
  • Context API: Implement an OpenAccessContext API that resets the Incremental GUID - New method called ResetIncrementalGUID is provided for restarting the generated sequence of incremental GUID values.
  • Convert From Entity Framework wizard: Convertion of database functions - Support for database functions automatic conversion is added to the wizard.
  • Support for MySql 5.6 and Maria DB 10.0.1 Alpha - OpenAccess ORM is now tested with MySql 5.6 and Maria DB 10.0.1 Alpha.
  • Validation Dialog: New model validation warning for nullable identity properties.
  • Validation Dialog: New model validation warning for columns that are not mapped to properties


  • Fluent Mapping Code Generation moved to a separate wizard - OpenAccess now provides an additional item template named "Telerik OpenAccess Fluent Model" which generates an OpenAccess model based on the Fluent mapping API without creating a rlinq file. This avoids the need to remove the rlinq file manually if the generated fluent mapping code should be customized.
    This functionality is available only for Visual Studio 2010 and 2012.
  • Model Settings: ‘Keep Metrics for Profiler’ setting switched off by default - On the Tracking and Logging tab of the Model Settings dialog, the Keep Metrics for Profiler setting was checked by default. Now it is switched off by default.
  • Stored procedures and functions icons updated - The icons for stored procedures and functions are updated in the Add New Item Wizard, Update From Database wizard and Model Schema Explorer


  • API : When using 'Attribute' mapping as the 'Code generation' mechanism the primary key fields of a persistent type did not reflect the settings made in the designer - When using 'Attribute' mapping as the 'Code generation' mechanism the primary key fields of a persistent type are calculated based on the 'Primary key' property of the column. If the column has the 'primarykey=false' value but the correspondig property in the domain class has the 'IsIdentity' property set to 'true', this was ignored and a default primary key was used for the type. This could lead to further metadata errors for fields that reference this class.
  • Fluent Mapping: Defining artificial types that use horizontal inheritance - When trying to define artificial types that use horizontal inheritance, an exception was thrown complaining about wrong id specifications. Now the Artificial Types support horizontal inheritance scenarios.
  • Fluent Mapping: Capability of configuring indexes for Multi-Table Entities - The possibility to specify indexes on secondary tables for Multi-Table entitites has been added to the FluentMapping API
  • Metadata: Wrong detection of 1:1 associations when an identity column is implicitly mapped to the calculated column name - A 1:1 association was wrongly calculated for simple fields when the persistent class using Attributes mapping had no explicit IdentityField specification and the actual identity column was mapped to the automatically calculated column name.
  • Model Settings: Class names wrongly capitalized in some cases - The treating of capital letters as word delimiters can now be turned off by setting the Treat Capital Letters as Word Delimiter in the Model Names tab. The Capitalize option will always make the first letter of a word capital and lower the rest.
  • Multi-Table Entities: Data was not correctly updated after schema migration of Multi-Table entities - A newly added column value stored in a remote table was not inserted when an update on an existing object was done. An insert is needed since the value was added after the initial object was stored to the database.
  • RIA Services: Changes to Master-Detail relationship not handled appropriately when submitting changes via a RIA domain service - RIA Services Domain Context now handles properly One-to-Many relations when changes are done to the parent entity.
  • RIA Services: KeyStateManager.SetValue method could cause a StackOverflowException. - The method contained a loop which would not end under certain circumstances.
  • Runtime : Artificial fields marked with LoadBehavior.Lazy were always loaded when the object is loaded. - Fields of a class can be marked with a LoadBehavior = Lazy to avoid loading them by default. This setting was ignored for artificial fields and the field was always loaded when the object is loaded.
  • Runtime : Setting the value of a nullable integral field that is shared with a reference field to 0 results in a NullReferenceException - If a reference field and a nullable simple field are mapped to the same column and the simple field is set to 0, a NullReferenceException wss thrown when the object was added to the context.
  • Runtime: Dangling reference caused a converter exception when a timestamp was used as concurrency member for Sql Azure - A exception was thrown in the EightBytes2LongConverter when a class was configured to have a timestamp as concurrency member and was referenced by another object. When trying to access the referenced object, Azure is reporting a byte[] with the size of 0 in the case the value should be null. That caused a "Expected 8 byte array but got array with length '0'" exception.
  • Runtime: FetchPlan not used for simple fields - When simple fields were defined to get loaded lazily, an explicitly specified fetch strategy defined on the context was not taken into account for the simple field.
  • Runtime: Recreating an object that is part of a 1:n association caused a exception - An object that was deleted an re-added to the context, where the N side has 1:1 association, and the collection on the 1 side is managed, caused the following exception. "Updates in 1:1 association scenarios are not supported. To update the reference, delete the referenced object, flush the context and reassign the reference. "
  • SchemaMigration: Additional columns were dropped from a join table but CheckExtraColumns is set to false - A additional column was dropped from a join table even when the SchemaUpdateProperties were configured to CheckExtraColumns = false.
  • Update Database From Model: Removed indexes shown in the 'Select Changes' page. - The removed indexes are not a change that is applied during the process of updating the database so now they are also not shown as a change in the wizard.