Attention: We are retiring the ASP.NET Community Blogs. Learn more >

Object-Relational mapping technologies

I spent a lot of time in this morning developing some nice examples using Object Spaces. I plan to make some posts about object-relational mapping technologies. By the moment now I am testing the last version of WilsonORMapper. Here you have some of the potentialities of this technology.

    Database Support
  • Supports MS Sql, Access, Oracle, as well as generic OleDb and Odbc.
  • Currently tested with MySql using ANSI compliance and Odbc driver.
  • Retrieve individual objects by key -- auto, guids, and user-entered.
  • Use auto key-types with Oracle 9+ by setting trigger with sequence.
  • Composite keys supported, except in relations, thanks to Jerry Shea.
  • Supports one-to-many, many-to-one, and many-to-many relationships.
  • Supports optional lazy-loading to minimize reads from the database.
  • Supports optional default sort orders that are always overridable.
  • Supports optional field default null-values -- thanks to Tim Byng.
  • Use any raw sql statement with GetDataSet or ExecuteCommand.
    Retrieval Support
  • Retrieve individual objects by primary key, often from internal cache.
  • Retrieve collections as a static ObjectSet or a cursor ObjectReader.
  • GetCollection returns strongly typed collections -- thanks to Allan Ritchie.
  • Retrieve DataSets, optionally specifying a specific subset of fields.
  • Query with any where and sort clauses -- use sql or the QueryHelper.
  • Build simple expressions with an OPath-like syntax using the QueryHelper.
  • Even use most standard OPath statements -- thanks to Jason Mesches.
  • Supports paged collections -- queries can specify page index and size.
  • Can optionally use stored procedures with parameter for any retrieval.
  • Performance is very much comparable, sometimes better, than DataSets.
    Persistence Support
  • Explicitly create objects with new and StartTracking, or use GetObject.
  • Persist individual objects, or a collection of objects in transaction.
  • Thanks to Ken Muse for recursive persistence and cascading delete help.
  • Recursively persist all related child changes with PersistDepth.ObjectGraph.
  • Optionally enable cascading deletes on any relation in the xml mappings.
  • User can define fields for optimistic concurrency, or read-only fields.
  • Updates can optionally be only the changes, with or without concurrency.
  • Execute set based updates and deletes, including update set expressions.
  • Persistence is done with safe and efficient parameterized dynamic sql,
  • although stored procedures can optionally be configured for persistence.
  • Supports optional before and after event notification for persistence.
    Simple Architecture
  • No need to inherit objects from a base class or embed any attributes.
  • Object-relational mappings are made in an extremely simple xml file.
  • Optionally use embedded resources for mappings -- thanks to Allan Ritchie.
  • Support class hierarchies and simple mapping inheritance by Jerry Shea.
  • Includes a Windows ORHelper to generate the mapping and class files.
  • Collections support one-way read-only binding for both Web and Windows.
  • Separate instances can be created for multiple databases or providers.
  • Easy to deploy with simple x-copy in shared web hosting environments.
  • Supports server systems with a configurable session and cleanup time.
  • Includes full C# source code, as well as the rest of WilsonDotNet.com.

 

No Comments