Data Access 2008.31327

Jan 26, 2009

Telerik OpenAccess ORM Q3 2008 SP3 Release Notes (2008.03.1327.2)

New Features and Enhancements

  • Remember popup window sizes - The Reverse Mapping Wizard size should be remembered for the next session.
  • Requesting an explicit name mapping now in cases where the auto generated name is not unique. - When the default name generator attempts to disambiguate an automatically generated name, an error or warning is given now requesting an explicitly given name. This avoids the pitfall, that the auto generation of names is dependent on the order of processing and could break at a later time. Example: Referencing the A class from the B class with more than one field, the name generator uses a_id and a_id2 for the referencing columns. When the order of the fields is changed (name or declaration), the field using a_id previously could now use the a_id2 column. An error was not detected by this. Now, a warning is given by default so that such possibly breaking automatic name generation mappings are detectable. This is especially important for existing Vanatec customers that want to port their applications to Telerik.OpenAccess as the order of the fields during processing has changed and so the auto generated names are in a different order as well. To turn the warnings into errors, the backend setting can be set to false; this can be accomplished in the backend configuration dialog.
  • User defined tracked collections might be replaced - If user defined tracked collections (TrackedList<> or TrackedBindingList<>) are used as persistent collections there are situations where OpenAccess replaces the collections by a new instance instead of refilling the existing.
  • {auto} mapped collections can not change mapping - The forward mapping UI for collection fields without join table does not have controls to adjust the mapping of the inverse field.
  • Reverse engineering dialog should have mass operation checkbox for generate sources - If there are a lot of tables inside your database and you want to regenerate only some there should be the possibility to select certain rows and check/uncheck the generation checkboxes together.
  • Scope and container should have mass operations with enumerable and enumerator - Most of the operations like add and remove did work with IEnumerator. Now it is possible to pass in an IEnumerable, an Array and an IEnurator directly.
  • LINQ: System.Linq.Enumerable.Count (void) supported on the server side - Count is now pushed to the relational server. This improves the execution time of the query.
  • Container.CopyFrom loads to many fields - Filling the object container requires hollow objects behind references and collections. During CopyFrom these objects were filled completely what is not necessary.
  • Navigational access to hollow instances should not execute queries - After a Transaction.Begin all in memory objects are set to hollow state. This means the id fields are still valid but all other data is cleaned. If such an object was accessed by following a persistent reference from a 2nd object the default fetch group was loaded. This happened because OpenAccess wanted to make sure that the object is not already deleted and a pessimistic lock is caught early. The behavior changed now because of the overhead of the executed statements. An already deleted or lock not granted exception may be thrown later now.


Fixes

  • OQL with more then 9 parameters does not work - It the parameter $10 is used in an OQL query the sort order of the parameter passed into the execute method is wrong.
  • User defined persistent collections with more then one generic argument does not work - If a user defined persistent collection has an additional generic argument it is only working sometimes. Now the restriction is, that you have to specify the generic type of the TrackedList<> or TrackedBindingList<> as first parameter.
  • Visual Studio addin throws an Argument out of bounds exception during project property loading - If the property page of an WPF project is opened an exception Argument out of bounds is displayed.
  • Renaming an already reverse engineered class does not remove the mapping node - If the classes are already generated and you restart the reverse engineering wizard and rename a class, everything works except that the app.config file still contains a mapping node of the former class. This does also not work if you just remove a class.
  • Reverse Engineering does not merge AutoInc into existing mapping - If a pk column is set to autoinc and this new setting is merged into an existing reverse engineered configuration the autoinc setting is not written to the mapping file.
  • FieldAlias Attributes can not refer to fields in the base class - If a property in a derived class should be used to query for a base class field the enhancer throws an field not found exception.
  • Additional managed mapping node at collection might lead in run time exceptions during collection.Add - If manage is defined for collections that do not support the managed setting because there is no opposite side to manage are throwing an Exception with text 'Add Managed'. The workaround is to remove the managed settings.
  • ObjectContainer can not merge two new objects - If you Apply or CopyFrom a new object twice to a container the merge operation will throw an exception instead of just using the new data.
  • LINQ: Sorting with two or more arguments fails - Simple sorting works, but sorting for two or more criteria did not.
  • Structs in container can not be changed - If an object in the ObjectContainer contains a reference to a struct and this reference is boxed a "Field is not loaded" exception will be thrown by field access.
  • Old reverse mapping files not working - If the reversemapping.config file contains field information about columns that does not longer exists the revers mapping wizard fails to start with a null reference exception.
  • LINQ: Using nullable typed fields / properties leads to invalid casts - Using a nullable field / property like short? and comparing that with a value leads to invalid cast exceptions.
  • DataSource default ordering not working - If the ordering is directly specified at the data source it will be ignored, only the ordering passed into by the control is working.
  • sql server text columns have a default length of 255 - The default length is used if no mapping sets the length. In difference to varchar(max) the text type gets a 255 which does not work.
  • FetchGroup dialog crashes - If fetch groups are set to be written to the code and you deselect a field in the fetch group editor (forward mapping) it crashes with a null reference exception.
  • Mapping a SQL query result to a model class requires exact match of primary key column names with the returned result set column names. - When the result set returns ID but the primary key column is generated as id, the pk column is not matched and therefor no mapping can take place. Changed: Column name comparison is now case insensitive.
  • Reverse Engineering: Generated object id constructor code is incorrect as only some pk fields are initialized from string parsing. - The code that the reverse engineering wizard is produced if more than 2 column are part of the primary key definition does not serialize and deserialize the IObjectId instance correctly.
  • Reverse Engineering: Using a primary key column of char type not possible with multiple field identity, works with single field identity - When a char pk column is encountered for a composite pk, the enhancer complains and the generated code is wrong. Using a single pk column of char type is working, however.
  • Using Query with MaxResultCount where the value is set to Int32.MaxValue produces an exception (TAKE param missing) - Workaround: Not setting MaxResultCount when no real limitation is intended.
  • Using the ordered extension for a collection of a subclass of a horizontally mapped class gives NullReferenceException when ordering condition is on the base class - When a derived class has a horizontal base class and when a collection of derived classes uses the ordering extension to specify a non-standard ordering for that collection and the ordering is expressed as a horizontally mapped field, a NullReferenceException is thrown.

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.