Release History

By product

Data Access Free 2008.31205

December 4, 2008

Telerik OpenAccess ORM Q3 2008 SP2 Release Notes (2008.03.1204.01)

New Features and Enhancements

  • scope.Remove should handle IEnumerable parameter to delete collections - ObjectScope and ObjectConatiner have a remove method that allows to remove single persistent objects and an IEnumerator to remove collections. Because of the .NET IEnumerable/IEnumerator pattern this is not a good API. Remove should handle IEnumerable as well.
  • Better error message if querying for structs - You cannot compare a struct reference directly, you have to use one of the struct fields to compare to in a query. The problem is, that the exception is thrown too late and had a missleading text. This has been improved now. VOA-1919 Reverse Engineering: Suppress MON$ tables from beeing seen by the reverse engineering process This avoid non-user tables to be displayed during rev engineering.
  • MS SQL Server not connectable with the default settings - Using a MS SQL Server should be very easy, the default installation with enabled firewall should just work. Test connection in the enable project wizard as well as reverse engineering has to work. We are now using the same connection string as VS.
  • Oracle: Using AUTOINC key generator for id fields behaves correctly during runtime. - This allows key sequences to be used in the database, but the schema update process is not aware of sequences and does not write them.
  • OpenAccess DataContext for ADO.NET DataServices - ADO.NET DataServices needs an IUpdateable implementation. OpenAccess has now an example class as source code showing how to implement a DataService directly against OpenAccess. The description is part of the source code.
  • LINQ: Count property filter condition on collection fields pushed to server side - It is possible to filter on the count of instances in a collection. The count expression uses a count(*) query on server side now. Example: from x in scope.Extent where x.Addresses.Count == 0 select x;


  • Setting instance name and tcp port is not working - If you specify the tcp port and an instance name the port setting is not detected by our connection string parser.
  • Reverse engineering crashes with null reference exception - If a database table or field name has only digits and special chars as name, the reverse engineering wizard crashes because it can not generate a proper class or field name. The Workaround is to just add some normal character to the name.
  • Old reverse mapping file can not be red - If a reverse mapping file is reused that is generated prior the 4.4 version it will throw an null reference exception during load.
  • LINQ: Selecting a single value into a new anonymous type fails with conversion exception - An expression like var res = from p in ext where p.Name.Matches("*") group p by p into g select new { m = g.Max( c => c.Birthday) }; failed because the new anonymous type could not be filled with the selected database value.
  • Schema Migration/MSSQL: Changing the type or length of a column can lead to an invalid DDL script - The error shows up as a 'column not found' message from the SQL server.
  • Visual Studio: Using a project type 'Database' can lead to problems when designing a new DataForm - Workaround: Unload the database project first, do the action, reload the database project into the solution.
  • OpenAccessDataSource does not report the id fields during designtime - This leads to update not possible exception if a data in the ui is changed. The workaround is to specify the DataKeyNames list by hand.
  • MySQL reverse engineering not working - Starting reverse engineering of a MySQL db throws a 'Not a DBConnection' error.
  • Configuration: Using the ordering collection field extension produces a null reference exception - Using the extension to sort inversly held collections gives a null reference exception.
  • Reverse Engineering does not delete removed fields from mapping - If the reverse engineering wizard is started a second time and a field is removed the generated mapping file still contains mapping for this field and you get a runtime error.
  • LINQ: Using Skip()/Take() and Count() can lead to inconsistent results - Using paging functionality with Queryable.Count() can cause the calculation for the size of the unpaged result (GetTotalCount()) instead of the size of the page.
  • LINQ: Using Visual Basic comparison operators gives exception - When using the VB string comparison operators like <> an exception is thrown. Workaround: Using the .Net Framework String.Equals() method.
  • LINQ: Enum support - There was a problem when using enum valued persistent fields/properties with LINQ which showed up as an exception ".... is not a reference to another PC class" caused by a Convert node in the LINQ expression tree.
  • Firebird: NullReferenceException during schema update - A NPE could occur on empty databases when the database schema is migrated.
  • Container.CopyTo throws index out of bound exception - filling the container with a classe hierarchy can throw an index out of bound exception.
  • ObjectContainer uses Retrieve in CopyTo - Call Retrieve means that the Retrieve Fetch Plan with depth 3 will be used. In some user model this will generated to long and to complex SQL statements. This has now been modified so that only a fetch depth of 1 is used.