Data Access 2008.31421

February 22, 2009

Telerik OpenAccess ORM Q3 2008 SP4 Release Notes (v2008.03.1421.1)

New Features and Enhancements

  • Support for using stored procedures - All insert update and delete operations can be fired via stored procedures
  • Adding concurrency control mode that uses all pass1 fields of a class, not only the changed. - Required by stored procedures as they don't have the flexibility in the calling interface for dynamically adding old columns based on the fields that changed; needed is a mode that uses all fields regardless of their changed status.
  • ObjectContainer CopyTo with reuse - The ObjectContainer got a new method to commit the changes to the scope more then once without committing the changes to the db immediatly. This function must be used with care because after committing the scope the conatiner is not longer usable,
  • Improve memory handling for Blob fields - Memory handling has been improved for Blob fields, less copies are made.
  • IQueryResult should have a root type property - The IQuery interface has a RootType property to get the result type of the query. This property should also be available at the IQueryResult.
  • Signed installer - The installer package should be signed to request the right UAC level.
  • DataSource fully implemented events - The OpenAccess Datasource has an complete set of events now. They can be used to implement a business layer under the data source.
  • Add CompilerGeneratedAttribute to enhancer generated code - FxCop complains about a lot of the enhancer generated methods and types. To avoid this the enhancer generates those methods and types now with a CompilerGeneratedAttribute.


Fixes

  • If an error occurs during saving settings the Reverse Engineering wizard closes and user loses all settings made - If an error occurs during saving settings the Reverse Engineering wizard closes and user loses all settings made so far
  • Policy files delivered with the product do not contain the needed resources. - The policy*.dll files contain resources, that allow a newer version of the assemblies be used instead of existing older ones. The problem is, that the resource is included with 0 bytes (the correct name is there), so that the binding redirect does not work as required.
  • Reverse engineering: nullable unique indentifier not mapped to GUID - If a nullable unique identifier column is reverse engineered it is mapped by default to Guid instead of Nullable and the wizard does not offer the right type to map to.
  • Horizontally mapped base class with more than one level not correctly processed internally, name of such mapped fields not prefixed consistently - When more than one level of abstract base classes are used, the field name was prefixed internally in an inconsistent way.
  • Dictionary tracking problem - If a persistent dictionary is changed with the methods Remove(KeyValuePair o) or Add(KeyValuePair o) it will not be marked as dirty and the changes will not be persisted.
  • DataSource designer throws exceptions in Silverlight projects - The OpenAccess data source designer tries to fin all persistent classes in the project. If an project assembly is not loadable for inspection the designer startup fails. Workaround, have all not 'copy local' assemblies in the gac.
  • LINQ: Projections to nullable types not working - When a projection to a new anonymous type was made using a nullable field, the used conversion method failed. This occured f.e. in data binding the RADgrid.
  • LINQ: First/FirstOrDefault - First/FirstOrDefault not working with new anonymous type of more than one property
  • AUTOINC keygen not correctly working for self referencing instances - When an class uses the AUTOINC key generator and tries to store an instance that references itself directly, that reference is incorrectly stored with NULL.
  • MSSQL: Using a TIMESTAMP column as version field for concurrency control can lead to rare 'Row not found' conflicts during commit - This happens only if there is a certain byte pattern present as column value (very rare).
  • Problems in low trust scenarios - In low trust environments the call to Assembly.Location is not possible. The exceptions is now catched in all runtime situations. This means that app.config files for libraries can only be embedded resources in lower trust levels.
  • Visual Studio 2008 example is not compilable - If the web reference is updated in the ExamplesWin project, this causes the Reference.cs to be regenerated which in turn changes the namespace from 'ExamplesWin.ContainerService' to 'ExamplesWin.ContainerService35'. This causes the compiler errors.
  • Obtaining project information fails if the solution contains a deployment project - If the solution contains a deployment project, any feature that needs all the projects' information loaded initially (forward mapping, check settings ) throws a NotImplementedException
  • Serialize to blob with reference to persistent classes not working - If a reference to a non persistent tree is marked as serialize to blob and this tree contains references to persistent classes that have single or multiple field identity it is not working.
  • ObjectContainer can not handle types with structs in base classes - If a base class contains persistent structs the container can not handle all situations correctly. Adding such an object to the container fails with a type cast exception
  • To many checks in container.CopyTo - If the changes are copied back from the container to the scope we are doing checks. One check is if the generic collections are persistable. With our newer TrackedList implementation this check is to restructive.
  • ObjectView events fires too often - If the ObjectView is bound to the picklist of a combobox and the datasource is set to an ObjectProvider all items are added twice to the picklist. This happens because a changed event is fired which leads in a recursive filling of the combobox.
  • IgnoreUncommitted=false does not recognize provisional persistent data - If a query queries for data that has been changes in memory but is only in provisional state IgnoreUncommitted = false does not work. Provisional persistent means the data is a new object not added directly to the scope but via a reference from an already persistet object. Those instances are not recongnized by the flush calculation if the transaction content has to be flushed before the query can be executed.
  • Installer does not patch addin file - If the installer runs under vista with UAC enabled the install steps that requieres admin rights are executed in the wrong rights schema and the product is not installed correctly.
  • Reverse Engineering produces wrong classes in case of VB and Visual Studio 2005 - The reverse engineering wizard produces '?' to mark nullable fields in case of VB. This is working with the Visual Studio 2008 but not with 2005. The wizard produces now nullable(of ..) statements.

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.