Release History

By product

Data Access Free 2009.31119

November 19, 2009

Telerik OpenAccess ORM Q3 2009 SP 1 Release Notes (v2009.03.1119)

Fixes and Improvements

General
  • FIXED: Hanging web pages with OpenAccess datasources in a grid view templates. If paging was enabled on all levels of a grid using additional data sources inside of view templates, then the site became unresponsive. This happened because the datasources were not returning the connections to the connection pool which was empty after 10 inner executed queries.
    In case upgrading to SP1 is not possible, use the following workaround:
    Disable paging for the inner datasources.
  • IMPROVED: The enable project wizard now shows a friendly message when VS2010 .NET framework profiles are used, which says that those profiles are not supported. No error message is thrown any more
  • FIXED: The Enable project wizard crashed when the section inside the Web.config file contained xml comments;
  • FIXED: Value logging failed for decimal values, only (NUMERIC) was printed, i.e. when logging included parameter values (log level all), the values of the decimal fields were not shown;
  • FIXED: InvalidOperationException was thrown when adding an instance to the scope in cases where application identity and artificial fields were used;
  • FIXED: Shared columns were not synchronized for string fields, i.e. when a string pk was used and a referencing class used a string field to access the id as a foreign key, the field value synchronization was not working as expected;
  • FIXED: Shared Columns: Metadata compilation failed when two reference fields share a column, i.e. sharing was not allowed between fields other than reference fields and simple fields. Now, also reference fields can share a column.
SQL and Backend specific issues
  • FIXED: SqlCe support failed, because OpenAccess Express executed a wrong statement to obtain the version information, failing the express check;
  • FIXED: MySQL: Lock timeouts were not recognized correctly - When a lock was set in MySQL, the locked-out client got a nearly empty exception from the server, which was not correctly handled as a lock timeout;
  • FIXED: Truncation of string values in the GetSqlQuery() parameters. When a SQL query was executed with string parameters, the string values were truncated to 65k. Now, LONGVARCHAR parameters are handled dynamically in their size.
  • FIXED: Shared columns must be found case-insensitive on backends which were case-insensitive (MSSQL). When two fields should share the same column, but the given column names were differently capitalized, the column must still be shared. This applies only to backends that are case-insensitive wrt. column names.
  • FIXED: MSSQL: Problems with avoiding language or culture caused DateTime literal conversion, i.e. the server assumed datetime literals to be in a format associated with the language that was associated with the database connection. To avoid string representation mismatches, an explicit format is given now;
LINQ
  • FIXED: Server-Side Support for SingleOrDefault(Lambda) - SingleOrDefault can be used now instead of (or in addition to) a Where clause so that the condition is evaluated on the server side:
    var ur = os.Extent<userrole>().SingleOrDefault(c => c.UserID == id);

    How to make the same call without the lambda expression:
    var ur = os.Extent<userrol>().Where(c => c.UserID == id).SingleOrDefault();
     
  • FIXED: Grouping did not work on non-nullable and non-pc key fields, but was working on composite group keys and pc as group key and nullable<> fields;
  • FIXED: Orderby nodes were not correctly resolved when preceded by join and where clauses.
    In case upgrading to SP1 is not possible, use the following workaround:
    This can be addressed by just switching the places of the where and orderby clauses. When orderby is directly preceded by the join clause it is being handled a little differently.
     
    ----Example of non-working LINQ statement: ----
    var result = from pr in scope.Extent ()
    join c in scope.Extent<category>() on pr.CategoryID equals c.CategoryID where c.CategoryName.Length < 8
    orderby pr.ProductName
    select new { Product = pr.ProductName, Category = c.CategoryName };
     
    ---Same statement with the workaround:---
    var result = from pr in scope.Extent () join c in scope.Extent<category>() on pr.CategoryID equals c.CategoryID
    orderby pr.ProductName
    where c.CategoryName.Length < 8
    select new { Product = pr.ProductName, Category = c.CategoryName };
  • FIXED: Joins with pre-filtered sources were not working. Example:
    scope.Extent<a>().Where(condition1) join b in scope.Extent<b>().Where(condition2) ....
  • FIXED: Ordering on joined expressions was not working.
OQL
  • IMPROVED: The OQL exception messages for parsing errors now shows the complete query string, rather than a fragment of it.
  • FIXED: Group By was not correctly handled when the grouping key was self-reference - The query SELECT x, SUM(y.quantity) FROM OrderExtent x, x.orderDetails y GROUP BY x was not correctly handled