Screenshot Preview

此頁只有英文版

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.

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".

‎出版月份 Development Tool News & Software Component News, 11月 04, 2009

產品搜索

輸入搜索詞:

為什麼從ComponentSource購買?

ComponentSource 提供獨特的全球國際服務, 在世界各地共有超過1,000,000 開發者客戶.

更多訊息 | 關於我們