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