Multiple Models with the same connection string - Multiple contexts in one solution are now working out of the box even when defined with the same connection string, with automated metadata merging process and an API for more control over the separation or merging of metadata object.
Batching of similar statements - Similar database statements generated by runtime changes are now combined in a batch in order to reduce database calls, which improves the general runtime performance. The most benefit is delivered for scenarios with a remote database where the network slows down the database calls performance.
Command Timeout setting is provided - The timeout of the DbCommand is now exposed through RuntimeConfiguration.CommandTimeout configuration setting, added both on Database and on LINQ query granularity level. This way long-running queries can be configured separated and the global timeout can be adjusted appropriately.
Visual Designer: Navigational Properties naming made configurable - A new naming settings tab is provided in the Model Settings dialog and Add Domain Model wizard to ensure that flexible naming rules can be applied to the Navigational Properties as well, using the name of the Foreign Key column.
Support for Visual Studio 2013 RC - OpenAccess ORM design-time can now be installed in the Visual Studio 2013 Release Candidate
New OpenAccess.Core NuGet - A new NuGet is released holding only the required assemblies for using OpenAccess ORM. This new NuGet is designed to be used by projects that do not define persistent classes, but refer to the Data Layer.
Cascading Delete for Vertical Inheritance and Multi-table entities - A new setting is introduced which makes it possible to setup a cascading delete for domain classes in Vertical Inheritance or Multi-table scenarios.
Model Operations: New operations - Added set of new model operations to the renamed Batch Operations Dialog
Support for composite primary keys with an Auto-Incremented column - OpenAccess ORM now supports one auto-incremented column in a composite primary key, which was a limitation up to now. The new feature is available as a Visual Designer setting as well as a runtime capability. Previously auto-incremented columns were supported only when the primary key contains only 1 column.
Compound primary keys support in artificial types - Artificial types can now be created with compound primary keys
Support for Oracle 12c - OpenAccess ORM is now tested with Oracle 12c and this back-end is officially supported
Dynamic LINQ: Support for .Sql method - Support for the already existing .Sql() extension method was added to Dynamic LINQ
Visual Designer: Synchronized IsManaged property on both sides of the association. -
When the IsManaged property of Navigation Property is changed, the change should be applied on the other side of the association.
- Both sides of the association should have the same value for IsManaged.
- The IsManaged Property for navigation reference property should be disabled in the visual designer.
This behavior is already used in Fluent Mapping scenarios.
MySQL: Support for indexes on varchar columns longer than 767 bytes - The OpenAccess ORM runtime will now explicitly specify a length for the MySQL indexes. This is required as a workaround to a MySQL 5.6 bug.
Convert to Domain Model: Conversion report - A new conversion report is shown when files are converted from an OpenAccess Classic model to Domain Model.
PostgreSQL: Support for decimal and float auto-incremented Primary Keys - Auto-incremented primary keys are now detected from PostgreSQL Schema Read process even if the type is float or decimal.
MySQL: Schema Read optimized for Indexes - In some scenarios involving very large database schemata, the Schema Read was slow for indexes retrieval. This element is now optimized.
Visual Designer: Validation error added for duplicated reference in a compound primary key - The validation error is triggered when two identities from a table point to the same property from another table.
OpenAccess Enhancer supporting 64-bit builds out of the box - The OpenAccess.targets file now works out of the box in 64-bit build scenarios and provides configurable settings.
Code Generation: Automated setup for customization - The process of customizing the code generation templates is now started by a single button in the Model Settings, copying the default templates to a selected project.
Visual Designer: Deletion of Multiple Diagrams in Model Object Explorer - Multiple Visual Designer Diagrams can be selected and deleted simultaneously using the Model Object Explorer
Visual Studio menu: New and updated Help items - The Telerik -> OpenAccess -> Help menu is refreshed and new documentation links are added.
Batch Operations dialog renamed to Model Operations - The Batch Operations dialog is enhanced with additional operations and renamed to Model Operations dialog.
Multiple Models handling automated - When a second context type is initialized with the same connection string but different metadata, the metadata is automatically merged with the metadata of the first context type. An exception is thrown if there are duplicated class names.
New Nuget structure - The OpenAccess.CodeFirst Nuget now contains the OpenAccess build targets. The required assemblies are moved to the new OpenAccess.Core Nuget which is referred.
Context Object Key: Date Time and Time Span version keys not handled correctly during serialization - Serialization of an object key with a DateTime version field used to strip the milliseconds from the value
Kendo UI integration: Kendo UI aggregate queries using Avg, Sum, Min and Max throwing exception when working with OpenAccess ORM - Some Kendo UI queries could throw an exception "Failure: Parameter required by compiled query but not found in expression tree.". Now those aggregation queries are handled correctly.
Lazy loading: Problem with Unicode class names - If class with a Unicode class name (i.e. Chinese, Cyrillic) is triggering a lazy loading, an SQL parser error exception was thrown. Now the lazy loading is working with Unicode characters.
LINQ: Aggregate function exception when using a Fetch Strategy - Using an aggregate function on a persistent collection together with a Fetch Strategy resulted in an exception
LINQ: Average over Int64 causing exceptions in the DoubleConverter - Aggregate functions over columns mapped to long (Int64) properties will no longer result in InvalidCastException in LINQ queries.
LINQ: Filtering using Contains on another query results in an exception - When Contains is used with an additional query, the following exception was thrown: "Value cannot be null. Parameter name: pc". Example:
var query1 = context.Clients.Where(c => c.Age > 30);
var query2 = context.Clients.Where(p => query1.Contains(p)).ToList();
LINQ: Calculation of cache key insufficient for local variables of IQueryable type that are used for sub query expressions. - When a local variable is holding an IQueryable instance and this instance is used in a server side subquery, the calculation of the query cache key was insufficient, leading to the possibility of wrong query results when second level query caching is used or exceptions during parameter calculation.
LINQ: Filters and Orderings after an inner join not pushed to the server, but handled in memory - When a join is made, following conditions and filters are now always pushed to the database server, instead of handled in memory in some cases. The workaround was moving the conditions and filters before the join when possible.
LINQ: Ordering after Projection - If a query is specifying an order after the projection is specified, the runtime cannot execute the ordering on the server. Now the ordering continues on the client-side.
NuGets: OpenAccess.CodeFirst NuGet package is not installed properly from command line - When a NuGet package is installed from command line, the Power Shell scripts are not run. OpenAccess.CodeFirst relies on these scripts in order to copy the Telerik.OpenAccess.dll assembly to the OpenAccess Enhancer folder. If the install.ps1 script is not run the assembly is not copied, which leads to errors during compilation. Now the Telerik.OpenAccess.dll assembly is already present in the Enhancer folder and does not rely on scripts to copy it.
Oracle: Auto-incremented columns detection was not working with some trigger setups - Currently complex triggers are also detected by the Schema Read process.
Oracle: TNS entry wrongly required when using System.Transactions - The need for connecting via an TNS entry and using System.Transactions in Oracle environments has been removed.
Runtime: Using OpenAccessContext.Cache.Release(object) or ObjectScope.Evict(object) leading to invalid internal first level cache - In some scenarios, using the context.Cache.Release(object) or scope.Evict(object) methods have led to invalid internal first level cache data structure.
SQLite: Potentially inconsistent transactions when a database transaction is performed and a result set is still open - When a result set is not fully enumerated (with more than 50 elements) and changes are committed to the SQLite database from the same context, a transaction was not started on the database, causing auto-commit behavior. This could lead to inconsistently stored user objects in SQLite scenarios.
Type Mapping: Overriding CLR type mapping requires SQL type - Now overriding the default CLR type mapping does not require explicit specification of the SQL type.
Visual Designer: Dynamic search in Model Object Explorer having wrong behavior in some scenarios - When the name filtering the Model Object Explorer provides is used with a large number of classes, the key-press search sometimes led to wrong results.
Visual Designer: Changing the namespace and re-mapping could cause problems in Horizontal Inheritance - If the Namespace of the parent and child classes is changed and after that the child classes are mapped again, an error used to occur. Now the member definition type of all derived members is synchronized when the namespace is changed.
Visual Studio Integration: The startup project of OpenAccess Web Application changed to be the web project - The default startup project of the Telerik OpenAccess Web Application project template was wrongly set to the project containing the domain model.