Q1 2009 (version 2009.01.0311.1)

3/10/2009 1:00:00 AM

New Features and Enhancements

  • UI for mapping stored procedures for Reverse Engineered class/table
    User can specify stored procedures to be used for create, update and delete operations on a table. The Reverse Mapping wizard allows the user to specify stored procedures for each table that is mapped to a class,collection or map. Based on the table mapping the procedure parameters required for create, update and delete operations are calculated.
  • LINQ: Allow shaped result mappings
    It is now possible to create a new type tree from the result set like select new { X = c.X, Y = new { A = c.A, B = c.B } } when needed.
  • LINQ: Support for Grouping
    Support for grouping has been added, so that simple grouping requests are passed to the server. Limitation: Grouping based on expressions is not possible yet and a group cannot be enumerated yet.
  • UI in 'Reverse Mapping' wizard to generate static methods for stored procedures
    The Reverse mapping wizards reads the Stored Procedures in the database and user can generate a static method to execute them. Certain settings like method name and result type can be specified which determine how the method is generated
  • IDataObjectKey: handling of internal id and version information
    The disconnected ui elements like asp grid needs the id and version information to be able to write the updates back to the database. IDataObjectKey interface can be implemented on all persistent classes to provide this information in a bindable way.
  • Changed semantics for NUMERIC output parameter specification in SQL queries.
    New behavior returns a decimal as before, but uses a mapping to DbType.Currency (--> SqlClient.SqlMoney) which allows for non-truncation of returned values.
  • LINQ: Support for various String methods
    Support for the following String methods/properties has been added: int String.Length bool String.IsNullOrEmpty(string) string String.op_add(string) string String.Concat(string[]) string String.Remove(int) string String.Remove(int,int) string String.Substring(int) string String.Substring(int,int) string String.Insert(int,string) string String.Trim() string String.ToUpper() string String.ToLower() int String.IndexOf(string) int String.IndexOf(string,int) string String.Replace(string,string)
  • Improving Exception message when two types with the same name are found.
    When the same Type is available from different versions of the assembly, provide a guiding exception message as OpenAccess does not support different versions in one application.
  • LINQ: Allow additional Where parts
    A LINQ query in a form like 'from x in scope.Extent () where x.Age > 1 orderby x.Age where x.Age > 0 where x.Age >= 0 select x' is now processed correctly.

Fixes

  • scope.Remove should work with IObjectId instances
    To delete an object it has to be loaded first. To make that more clear the scope.Remove method did not support delete with object id. This has been added now. Nevertheless the object is loaded internally to call all necessary user funtions and event handler.
  • direct sql problem with pks used as reference as well
    If a column is mapped as primary key and to define a reference to a second class it is not possible to map the direct sql result. An exxception that the primary key is not part of the result is thrown.
  • Schema merge does not detect changes in the 'Allow null' property of a column
    Because schema merge does not detect changes in the 'Allow null' property of a column the database update is not triggered.
  • Support for medium trust environments (ASP)
    Binary Serialization is not possible in such environments we now do avoid that.
  • Second level cache does not evict all query results
    Under rare circumstances the second level cache keep old query results.
  • LINQ: Allow projections of enums
    Projecting an enum value into a new anonymous type threw an exception before.
  • Reverse engineering does not update all nodes in the app.config
    If a version field is removed or added a second time the information is not correctly written to the app.config file.
  • Reverse engineering can not merge in additon databases
    The merge or reload function does not work if additonal databases are selected in the reverse engineering properties dialog.
  • Mapping schema file not integrated in Visual Studio
    The schema file is not installed at the right place. The Visual Studio xml editor reports a lot of warnings and intellisence does not work,
  • Navigation via collection to a inner class type does not work
    If a persistent inner class is used in a persistent collection, it is not possible to iterate this collection because of type resolve problems. Workaround: Move the class to a namespace.
  • A persistent type without any fields is not enhance-able
    If a persistent type does not contain any fields the enhancer is not initialized correctly for this type and throws a null reference exception.
  • FetchGroup UI does not work if index without a name is given
    If the app.config file contains an index definition without a name, which is valid, the FetchGroup UI in the forward mapping wizard does not work.
  • Assign a new struct to a new object in the ObjectContainer does not work
    If a new object with a struct field exists in an ObjectContainer and a new struct is assigned to the struct field a 'not loaded' exception might be thrown.
  • OpenAccessDataSource should have TagPrefix attribute
    The OpenAccessDatasource registers itself under the CC1 tag name in the aspx files. With tha TagPrefix attribute it will register under telerik now.
  • Reverse Engineering fails if app.config file has comment blocks
    If the app.config file contains comment blocks in the mapping node the reverse engineering process fails because it can not merge the changes into the existing mapping.
  • Schema migration does not work for sql server 2008 database with stored procedures
    If the database contains a stored procedure the schema migration porcess throws a type load exception 'A null or zero length string does not represent a valid Type.' Workaround: remove all stored procedures from the database.

Release History Feed
What's New