Welcome to DomainObjects for .NET

Introduction

DomainObjects enables you to easily transfer data between your middle-tier .NET objects and a relational database. DomainObjects enables you to reverse-engineer your database schema, to automatically generate .NET domain-model classes, and to query and persist instances of these classes at runtime.

The latest version of DomainObjects is 2.1.0. It's freely available for download here.

Developer Productivity

DomainObjects dramatically improves your productivity by:

  • Automatically generating your domain model classes.
  • Automatically generating the mapping between your domain model classes and database schema.
  • Automatically generating your SQL create, insert, update and delete statements at runtime.
  • Generating strongly-typed and IntelliSensetm supported query classes. This enables design and compile-time feedback and updates to your queries as your database schema evolves. Provides a richer, more expressive, type-safe SELECT, UPDATE, DELETE and INSERT API than LINQ.

Data Integrity

DomainObjects strictly maintains data integrity by:

  • Integrated transaction support. Transaction boundaries (units-of-work) are defined by DomainObjects custom attributes. DomainObjects automatically and transparently handles the database commit/abort.
  • Optimistic concurrency support.
  • Configurable transaction isolation levels.
  • Strict quality control. Over 275 automated NUnit regression tests are integrated into the DomainObjects build.

Performance

DomainObjects provides excellent performance by:

  • Only updating to the database those fields that have been truly modified during a transaction.
  • Use of the high-performance ADO.NET DataReader (rather than a DataSet) to retrieve values from the database.
  • 'Lazy-loading' of object references: related objects are read from the database only if they are actually accessed.
  • 'Prefetching' of object references: related objects can be read from the database in a single query if you know that they will be accessed, thus avoiding round-trips to the database.

See the following for a complete set of DomainObjects features.