此頁只有英文版
Telerik updates OpenAccess ORM
Q3 2009 adds support for SQL Server Compact 3.5 and SQL Azure, plus performance enhancements.
Choosing database objects to include in a model.
Telerik OpenAccess ORM comes with both forward and reverse mapping support and the tool offers transparent persistence for your DAL and business objects. Telerik OpenAccess ORM provides tight Visual Studio integration and allows you to create database independent code seamlessly. You will find many advanced features for code optimization and caching, as well as customization freedom to generate the code you want.
Updates in Q3 2009
- Metadata API
OpenAccess provides an API to access all metadata information during runtime. This contains the complete database schema definition used. The entry point is at the database instance, you can reach it from the ObjectScope via scope.DataBase.MetaData. To find specific class/table/field/column information you can use Linq. - Database level cache API
The OpenAccess database level (or second level) cache needs an API to check the cache content and to evict part of the cache. The API is available at the database instance and can be reached from the ObjectScope via scope.Database.Cache. - Configuration support for SNAPSHOT transaction isolation
You can now specify SNAPSHOT in the backend configuration for systems where this is supported (e.g. MSSQL). Shared columns support - A column with a foreign key constraint in the database can be mapped to a simple type field like an integer but it can additionally be mapped to a reference type field like Person.Address. The data in the database is in this case always an integer. The ORM automatically translates the integer to a reference and vice versa. Therefore it is possible to map a single column in the database to two fields in the object model. One of the fields must be of simple type and needs to be of reference type. - Performance enhancements for read access
Reading data is complex because lots of metadata and mapping related code has to be executed. The reduction of layers and memory consumption makes the read access faster. - SQL Server Compact 3.5 Desktop Edition
OpenAccess can now work with the SQL Server Compact Edition on desktop and server operating systems. Because of the backend limitations in SQL statements like subselects and stored procedures not all OpenAccess functionality is supported. - SQL Azure
OpenAccess can now work with the Sql Azure database. The database can be accessed from your local computer or from another machine in the cloud. All OpenAccess functionality including full design time support is provided. - .NET connection string support
The definition of the database connection was OpenAccess specific. Now a normal .NET connection string can be used too. The enable project wizard can use and test those strings as well. - Full artificial support
After having artificial fields support OpenAccess comes now with artificial types support. This also means that types can be defined on the fly and the database schema can be updated. The access to the artificial types is similar to the artificial fields. - API to check and update the database schema
In the development process new versions of the customers product will be shipped. These new versions might contain schema updates as well. OpenAccess offers an API to do this schema changes just before opening the database with a new version. Nevertheless this cannot be an automatic process because schema analysis takes time and schema migration with data migration might be a very long running process. - Auto setting for ObjectScope cache
OpenAccess sometimes had problems keeping references to the data in a fetchplan. This might result in GC runs throwing out the fetched data before the application can access it. The auto reference type setting makes sure that this cannot happen. This is the new default. - MySql supports System.Transactions integration
OpenAccess uses the MySql 6.04 driver now. This supports integration into System.Transaction. OpenAccess is able now to use MySql Transaction with it's System.Transactions integration. - Use ObjectContainer to copy data between different databases
The object container got a new method to mark all data inside the container as new. This can be used to insert the data into a fresh database. The API is ObjectContainer.MarkContentAsNew() - IsDirty(FieldName) missing
Sometimes it is necessary to check if a specific field is dirty. The API was missing and is now added. Breaking change: The enhancer contract has been changed. All enhanced assemblies must be recompiled. - Relax the need to call scope.Dispose()
In the past, a call to IObjectScope.Dispose() was required to release the resources of an object scope. The code has been altered so that the GC is better able to collect unused object scopes, relaxing the need to explicitly call Dispose(); it's still a good practice, however. - LINQ: Support for Math.Min/Max etc
Allows the usage of System.Math functions Abs/Min/Max/Acos/Asin/Atan/Cos/Sin/Tan/Sqrt/Sign/Cosh/Sinh/Tanh/Atan2/Floor/Ceiling/Truncate/Exp/Log10/Log/Round(a,b)/Pow. The methods will be pushed to the server and so that calculations are possible. Be aware, that different database backends calculate sometimes different values (e.g. Round on MSSQL and Oracle). - LINQ: OrderBy clauses not working for calculated expressions
The query 'from p in OrderDetailsExtent orderby p.Number * p.Weight select p' was not working. - LINQ: Allow ordering based on methods over columns
Allows the use of some methods like string.ToLower() / string.ToUpper() as an expression for the ordering, e.g. "order by x.Name.ToLower()" . - LINQ: Changing ForwardsOnly, ParallelFetch, IgnoreUncommited, Debug and BackendQuery from properties to methods
The API for OpenAccess LINQ has been changed: The BackendQuery property value is now obtainable from the generates IQueryable instance with the ToString() method. - LINQ: Move ExtensionMethod Extent() to Telerik.OpenAccess namespace
The extension method Extent() that is the main entry point for creating LINQ queries has been moved out of the Telerik.OpenAccess.Query namespace to the Telerik.OpenAccess namespace so that less namespace using statements are required. This possibly requires customer code changes in cases where only Telerik.OpenAccess.Query was imported; such a file must now only include Telerik.OpenAccess. LINQ: Support for boolean projections - Support for 'where ... select x = y' LINQ statements. - LINQ: OrderBy on identity was not working
The query 'from x in PersonExtent orderby x select x' was not working. - LINQ: Improve support for non-direct projections
Projecting into a given class - Upgrade functionality for enabled projects
The Check Settings wizard should be able to find and fix any discrepancies between the installed version of Telerik OpenAccess ORM and the version used to create the project. This includes all aspects like assembly references, project settings, resources, enhancement and postbuild steps. - Reverse mapping should support stored procedures with OUTPUT parameters
Static method to call stored procedures with OUTPUT parameters should retrieve the output parameter values and pass them out via 'out' parameters - ora_rowscn pseudo column support for version control
ora_rowscn is a pseudo column in each table in Oracle 10 and above that reports a unique version number for a row. Pseudo columns can be used as backend side version mechanism. The problem was, that OpenAccess delimited the pseudo column together with all other columns. You have to add a long field to your persistent class in order to use this column. Use that for concurrency control with type=backend. Oracle: Improved reading of NUMBER columns that are mapped to System.Double or System.Single - When a System.Single or System.Double field is mapped for Oracle, the resulting FLOAT (63/126) column can hold values that are bigger than what a System.Decimal can represent. The change affects the way such columns are read as now values exceeding 28 digits can be handled correctly, no longer resulting in exceptions. - ObjectContainer performs closure analyzation before serializing
When an ObjectContainer is serialized, it performs a closure traversal before in order to really collect all instances that need to be serialized. - ObjectContainer ChangeSet should be version agnostic with regard to OpenAccess API assembly
The serialized Object Container cannot be deserialized if the OpenAccess version has been changed in the meantime. - Allow ObjectContainer.Apply() when a transaction on the object container is active
The purpose is to allow modified object containers to fully use the resolve proxy event handler. Otherwise only clean containers can programmatically lazy load instances. ObjectContainer.Apply got a new overload with an additional bool 'force' parameter. - Improve handling of ntext database types with ntds driver
NTEXT in sql2000 and OpenAccess produced an exceptions when try to operate with it. Changing to varchar was working. - Reverse mapping does not recognize autoinc fields in MySql db tables
When reverse mapping a MySql database, AUTOINC fields are not recognized properly. So IDs of newly inserted objects are not being refreshed after scope.Transaction.Commit(). The reverse mapping wizard has a checkbox now where you can specify per column that it contains a server side calculated value. - Two projects with the same name in a solution prevents OpenAccess from loading
If a solution contains 2 different projects with the same name OpenAccess addin crashes. It happens because project short names are used in a dictionary instead of unique names. Workaround: Rename one of the projects. - Enhancer cannot enhance Linq new types in select
A query like: var result = from o in os.Extent<LINQEntities.Person>() where true select new { o.Age, o.Birthday }; will not be enhanced in the right way. - Targets in the Target view in the Check Settings wizard should be sorted alphabetically
In the targets tree view of the Check Settings dialog the classes are also not in alphabetical order. This is non-practical if you have a lot of targets and every time you open the dialog the target you are looking for appears at a different position.
For more information visit:
http://www.telerik.com/company/press-center/company-news/telerik-q3-2009-release-features-leading-edge-additions-to-all-in-one-net-toolbox.aspx
About Telerik
Telerik is one of the trend-setters in the development of User Interface components for .NET and add-ons for Microsoft SharePoint. The Telerik name is most often associated with constant innovation, meticulous support, and an aggressive release schedule. Telerik's flagship product, RadControls, is the most comprehensive toolset for .NET UI development. The suite enables developers to rapidly build visually stunning web and desktop interfaces with unmatched performance and interactivity. The Telerik mission is to exceed your expectations and help you "deliver more than expected".