Data Access 2011.1411

Apr 12, 2011

Telerik OpenAccess ORM Q1 2011 SP 1 Release Notes (v2011.1.411)

Enhancements

  • Runtime: Introduced read after delete setting - Read after delete is a feature that allows you to access the values of a deleted but not committed object. Until now this had to be set via the transaction properties. Now it is usable via the backend configuration object bc.Runtime.ReadAfterDelete.
  • Runtime: Introduced concurrency control setting - The backend configuration has properties to set the concurrency mode, but those proved too complicated to use. A new Concurrency property has replaced the Optimistic and DatabaseTransactionMode properties.
  • Runtime: Implemented ability to cancel tracking events - Until now, in order to cancel OpenAccess tracking events it was necessary to throw an exception. There is now a Cancel property in the event arguments.
  • LINQ: Improved support for SqlDouble and SqlGeography property accessors - When a SqlDouble.Value property is accessed, the returned double value is now retrievable. Same applies for SqlGeography.IsNull etc.
  • Fluent: Implemented handling of internal fields for version, discriminator and identity columns - A new API has been introduced for setting and configuring the following internal columns to be used with OpenAccess.
    * internal identity
    * internal version
    * internal class id
  • Fluent: Introduced a parameterless HasConstraint API for associations - Implemented API that allows for association to be created with a constraint without specifying its specifics.
  • Fluent: Implemented mapping two properties to the same column using Flat inheritance - It is now possible to map properties in derived classes to the same column in the case of Flat inheritance.
  • Fluent: Index Support - Implemented support for managing indexes with the Fluent Mapping API.
  • Fluent: Define indexes over properties of base type in case of Flat inheritance - It is now possible to define an index over properties that are defined in the base class in the case of Flat inheritance.
  • Fluent: Provide API for setting LoadingBehavior on MetaNavigationalMembers - It is now possible to specify the LoadingBehaviour of navigational members.
  • Fluent: Provide API for setting LoadingBehavior on primitive members - It is now possible to specify the LoadingBehaviour for primitive members.
  • Fluent: Aggregate metadata source now retrieves the explicit value, no matter which side it is on. - The aggregate metadata source is now able to get the explicit value from the extending source if the other source has a default value specified.
  • Fluent: Provide API for defining indexes - Implemented API for creating MetaIndex objects. This API is located under the Telerik.OpenAccess.Metadata.Fluent.Advanced namespace.
  • Fluent: Implement string based API that allows for defining both field and property names - A new string based branch of the Fluent Mapping API that allows for both property and field names to be defined. Using syntax similar to the already existing API for mapping fields. This API is located under the Telerik.OpenAccess.Metadata.Fluent.Advanced namespace.
  • Runtime: Made read operations after context.Dispose() configurable - Many use cases require that the values of persistent fields are accessible after the managing context is disposed. A property named 'AllowReadAfterDispose' was added to the runtime configuration to make the behavior controllable.
  • LINQ: Better usage of first level cache when only simple primary key field queries are detected - Users can now use LINQ expressions of form OrderItemExtent.Single(o => o.OrderId == orderParam && o.ProductId == productParam) to shortcut the query execution through the transparent use of the first level cache. Such expressions will be detected and will be transformed into the corresponding Context.GetObjectByKey(...) methods, leading to much better usage of the first level cache and also allowing better usage of the second level cache.
  • Visual Designer: The following dialogs are now resizable - Association Editor, Model Settings dialog, Validation dialog.
  • Visual Designer: Add new domain model wizard and Update from database wizard are now resizable.
  • Visual Designer: Improved the Select changes page in the Update from database wizard - added a "Select all" button, improved searching, tree node state is now preserved during navigation between pages.

Fixes

  • DSL: Fixed: Loading old model does not deserialize inheritance relationships. - Inheritance relations are now deserialized when reading old rlinq files.
  • Fixed: SqlAnywhere generates duplicate keys occasionally - The high low key generator grap mechanism did not update the keygen table in some occasions. The prepared statement cache from sql anywhere client did not seem to work in all cases. The prepared statement cache is now disabled.
  • SQL CE/LINQ: Fixed: translation of String.Contains(x) fails for non-constant x values. - When MS SQL CE is used, the LINQ expression translation of x.Contains(y) (x,y strings) produced SQL that looks good, but produces errors (arithmetic operation not supported for this type). This could happen when the string field x is mapped to a NTEXT column and y is a parameter, not a constant value.
  • Fixed: SqLite db with " delimiters not readable - If the SqLite database schema is generated with "as delimiters around column or table names, the OpenAccess schema read process reported errors about invalid primary key constraints.
  • Fixed: locking setting not accepted - Setting the transaction locking in the visual designer or directly at the BackendConfiguration is now working.
  • Fixed: shared columns and managed collections problem - If a new object is added to the context and this object has a managed collection and a new reference is added to this managed connection, a NoSuchObjectException was thrown.
  • Postgres/Oracle: Fixed invalid 'FOR UPDATE' statements generated under certain circumstances - When pessimistic locking is used in one ObjectScope, following ObjectScopes could fail with locking requests where no locking should be done at all.
  • Fixed: Cache strategy 'All' not working - Using cache strategy 'All' no longer throws a null reference exception.
  • Postgres: Fixed database schema migration not working properly for char(x) columns - When a char(x) column is modified into a char(y) column (x != y), wrong DDL code was generated leading to char(1) columns.
  • LINQ: Fixed using the FieldValue method in a LINQ query leads to inconsistent results - The FieldValue field name was not part of the key for the compiled query cache, in some occasions resulting in a wrong query found in the cache.
  • Fluent: Fixed aggregate creates a duplicate table when flat mapping is used. - Aggregating multiple sources no longer creates duplicate tables when flat mapping is used.
  • Fluent: Fixed losing default values after aggregating sources - The default values of MetaItemAttributes are now preserved after aggregating multiple sources.
  • Fluent: VB anonymous expressions produced an extra convert statement - VB anonymous types are now handled correctly by stripping off the extra convert statement.
  • Fluent: Fixed changes to MetaPersistentType.BaseType not handled as primitive - Changes to the meta persistent type's base type property are now handled as primitive.
  • Fluent: Fixed FluentMappingSource throws 'Late bound' exception - The FluentMetadataSource is no longer throwing a 'Late bound' exception if it finds a static method returning a MetadataConfiguration that takes a parameter.
  • Fluent: Fixed columns in horizontal mapped classes not cloned to the derived classes - Whenever horizontal inheritance is used, columns from the table mapped to the base class are now copied.
  • Fluent: Fixed "{no}" constraints not added to the underlying table - Constraints generated when it is not desired the runtime to generate (MetaConstraints with the name "{no}") a column are now added to the underlying table.
  • Fluent: Fixed MapJoinTable(string) not adding the table into the Tables collection of the container - The MapJoinTable(string) method now correctly creates a join table and adds it to the Tables collection of the metadata container.
  • Runtime: Fixed context.Metadata not working with Azure - If a connection to Microsoft’s Sql Azure database has been opened, the context.Metadata call produced an invalid value exception.
  • Visual Designer: Fixed glitch in type presentation - Under certain circumstances, the types of the properties in the Visual Designer were displayed as Nullable` and not with their actual names (for example : Int32, DateTime etc.)
  • Code generation: Fixed VB .NET Root namespace handling - A namespace was always generated for classes whether or not their namespace matched the root namespace of the project.
  • DSW: Fixed crash when using DSW with a Free Edition license - When the Data Service Wizard is used with the Free Edition of OpenAccess, the discovery of persistent entity types failed with a NullReferenceException.
Have a feature request?

Post your feedback via the Data Access feedback portal or the public forums

What's new across all Telerik products?

See the updates feed

Next Steps

Download for free

Get your fully functional free copy of Data Access.

Get Data Access Sample Kit

Including demos and articles to get you started.

Suggest new features

Help us shape our roadmap.