DataObjects.NET is .NET library that dramatically simplifies development of data and business tiers of the database application. It provides:

Methodology that standardizes and simplifies development of persistent classes and services operating with them providing very clear separation of your business and data tiers from other parts of an application. Essentially DataObjects.NET requires you to build a hierarchy of your persistent and business objects over two base classes: DataObject and DataService. It provides more then 20 attributes controlling almost any persistence or behavior-related aspect. Don't worry about this number - you can know nearly 5 of them to start using DataObjects.NET.

Persistence framework handling all object persistence related tasks transparently. Moreover, this framework allows to almost forget that the underlying database exists - it handles even database schema updates. This framework fully supports inheritance, persistent interfaces, relations and collections, object queries, full-text indexing and search, multilingual properties and a lot of other features. Use of this framework makes most part of your data tier automatically compatible with Microsoft SQL Server 2005 \ 2000, MDSE 2000, Microsoft Access, Oracle and Firebird (free, but one of the most featured database servers) without any additional code.

Transactional services allowing to almost forget that your business and data objects operate in the concurrent transactional environment. Transactional services intercept calls of your business tier methods and wraps them into transactions (outermost or nested) providing that if exception or deadlock occurs, no data will be changed. These services are capable of re-processing method call on deadlock exceptions (and similar). This behavior is provided completely transparently for developers, but nevertheless it's highly configurable.

Security system supporting per-instance access control lists (allow-deny lists), permissions (custom permissions), security principals (users and roles) and permission inheritance. Its primary goal is to make usage of business objects completely safe, even when these objects are publicly available - via .NET Remoting, for example.

All is initially remotable - any persistent object or business service can be marshaled to another application domain via .NET Remoting (as well as all other DataObjects.NET-related objects, e.g. Query). This means that you can access your data and business tier from a completely different network or across the Internet with almost no additional code. DataObjects.NET supports two marshalling scenarios: access-by-reference for regular DataObjects and by-value marshalling for so-called offline entities (data transfer objects).

 

DataObjects.NET allows you to focus on code of business tier and application data model - it completely solves a set of problems that could take up to 80% of development time. Just imagine, what does it means - to find and fix an error (e.g. thread deadlock or "the latest update wins"-like problem) that appears only under high concurrency conditions. Sometimes it's not so easy to even imagine that such a problem exists!

 

DataObjects.NET can be used in virtually any application that accesses a relational database. You simply add a reference to DataObjects.NET.dll to your project to start using it.

 

DataObjects.NET is shipped with DataObjects.NET PetShop (DoPetShop) sample. This is a DataObjects.NET-based clone of the famous Microsoft .NET Pet Shop. Here are the most interesting comparison facts:

DoPetShop contains ~ 50 Kb of data and business tier code while .NET Pet Shop - 140 Kb (including Business Logic Layer, Model, DAL and two its implementations - SQL Server DAL and Oracle DAL, but without BLL\OrderInsert.cs - read further about this). This means that use of DataObjects.NET reduced business and data tier code size by 3 times! Note that DoPetShop shipped with latest versions of DataObjects.NET includes a lot of additional features - for example, it utilizes security system, full-text search and serialization features.

Moreover, it includes administration module. First version of DoPetShop that was very close to the original .NET Pet Shop by the feature set was much smaller - its data and business tier code size was less then 20 Kb, so it was nearly 7 times smaller then its original!

DoPetShop utilizes DataObjects.NET access control system - this means that DataObjects.NET takes complete care about the authentication and authorizes access to application's business objects

DataObjects.NET brings true full-text search to DoPetShop, while .NET Pet Shop always uses like to locate necessary products

DataObjects.NET, and consequently, DoPetShop, fully supports 6 database server platforms (Microsoft SQL Server 2005 \ 2000, MSDE 2000, Microsoft Access, Oracle and Firebird) while .NET Pet Shop - only SQL Server 2005 \ 2000 \ MSDE and Oracle

DoPetShop provides full, but safe access to its data and business tier via .NET Remoting (while .NET Pet Shop allows to perform only one simple operation via its web service), so generally you can perform any activity remotely, e.g. such manipulations with persistent objects as creation, changing, deletion. Allowed activities certainly depend on your security permissions. See DoPetShop Remoting Client - this WindowsForms application really does this (it shows a lot of other features also, see the screenshot).

There is only one Query in DoPetShop sensitive to database server version! I.e. different values are assigned to Text property of this Query instance depending on current database server.

There are some other benefits of DoPetShop, e.g. it provides more information on cart and order-related pages, but may be the most exciting one is that it's extendable with much less amount of efforts. You can find more information about this sample further.

 

We believe DataObjects.NET currently is one of the best tools on the market. It's a complete DAL and RAD tool for your business tier. It offers the richest feature set. We hope you'll enjoy using it!

 

You can find a detailed description of DataObjects.NET features in the DataObjects.NET Manual.


 

Product Editions

DataObjects.NET is available in 6 editions. All differences between them are shown in the table below.

 

Editions Comparison Matrix

Feature \ Edition

Express

Standard

Advanced

Professional

Enterprise

Persistence engine

 

   Persistent types count

50 at max

No limit

   Tables count

100 at max

No limit

   Persistent interfaces*

Not Supported

Supported

   Versionizing

Not Supported

Supported

Global Cache

 

   Maximal size

100 Kb

10 Mb

No limit

   Dependencies

Not Supported

Supported

Diagnostics

 

   Performance counters

Not Supported

Supported

Upgrades \ updates

 

   Release period*

~ 3 months

~ 2 weeks ... 1 month

   Free update period*

-

1 year

Support

 

   E-mail

No

Yes

   Forum

No

Yes

   Response time*

-

24 hours

12 hours

Source code

No

Yes

Nightly Builds

Not available

Available

   Update period

-

Weekly

Daily

Developers*

-

1

4

Online order

Price & purchase options

 

   Price (EUR)

Free

199

299

695

1995

   Online order page

-

Buy now

Buy now

Buy now

Buy now

Order at ComponentSource.com

   Pay by wire transfer

Click here to request the invoice by e-mail

Discounts

 

   1st Training session

-

None

300 EUR

   Volume discounts

Check volume discounts

   "Pay by wire" discount

5%

 

Remarks:

All unspecified features are absolutely the same for all Editions

"-" means "Not applicable"

Persistent interfaces in Express Edition are supported, but only built-in (declared inside DataObjects.NET assembly, e.g. IFtObject), as well as with few pre-defined names only (to make all samples that utilize them working)

"Release period" is average period between subsequent releases of the product

"Free update period" is the period of free product updates after the moment of purchase. All upcoming versions (releases) of product, including major version updates, are electronically delivered to the customers without any additional charges during this period

"Support response time" is maximal amount of time that can be spent on the first response for regular support requests; bug reports, as well as other cases requiring testing may require more time then 24 hours

"Developers" row contains the number of developers allowed to use matching DataObjects.NET edition as it's described in License Agreement. The number greater then 1 states that corresponding Edition is License Pack also.

All online order pages are secure.


 

System Requirements

To use DataObjects.NET you should have the following components installed:

.NET Framework 1.1 / 2.0 or Mono (Mono support is in alpha stage currently)

Microsoft SQL Server 2005 with SP1, or Microsoft SQL Server 2000 with SP3, or MSDE 2000 with SP3, or Microsoft Access, or Oracle (9i or higher) or Firebird (1.5.1 or higher).
Note: DataObjects.NET v3.9.X currently supports only SQL Server 2000\2005; upcoming v4.0.X will initially support only this RDBMS as well.

Microsoft Search service should be installed and running in order to use full-text search functionality with Microsoft SQL Server 2005\2000

DotLucene (Lucene.Net.dll) should be available in assembly search path list in order to use its full-text search functionality (it's fully RDBMS-independent)

Oracle Client should be installed in order to use DataObjects.NET with Oracle. If you're planning to use NativeOracle driver, ODP.NET should also be installed

Firebird Client and Firebird .NET Data Provider (1.6.3 or higher) should be installed in order to use DataObjects.NET with Firebird.

 

Additionally you should have Visual Studio .NET 2003 installed to recompile the samples shipped with DataObjects.NET in the most convenient way. Otherwise you can perform this task using command line compiler supplied with .NET Framework.

 

Installation

To install DataObjects.NET you should simply execute the installer. There are several possible names of the installer (it depends on the download location): DataObjects.NET_X.Y.Z_EditionName.exe (e.g. DataObjects.NET_3.6_Express.exe), DataObjects.NET_EditionName.exe.

 

Redistribution

DataObjects.NET assemblies (DataObjects.NET.dll, its .NET 2.0 and Mono versions) may be distributed along with your products. This is the only redistributable file. Note that you may not distribute the DataObjects.NET.dll with any sort of software that attempts to replace or duplicate in part, or in whole, the functionality of DataObjects.NET. Essentially, if your product makes use of the DataObjects.NET.dll and your application's functionality does not reproduces the functionality of the DataObjects.NET, you are free to distribute the DataObjects.NET assembly with your application.

 

Please note that this description is not a binding license agreement, you should refer to the License Agreement bundled with the product for details.

 

Documentation

DataObjects.NET includes the following documentation:

DataObjects.NET Manual
Covers most of DataObjects.NET features and concepts

DataObjects.NET HTML Help
Contains HTML versions of all available documents (Manual, Readme, FAQ, License Agreement, Benefits) as well as reference covering all DataObjects.NET classes and their members

DataObjects.NET FAQ (Frequently Asked Questions)
Contains answers to most frequently asked questions.

DataObjects.NET Revision History

 


 

How to run samples?

Important notice: all samples except DoPetShop use a different data model but operate with the same database ("DataObjectsDotNetDemos" on Microsoft SQL Server or "DEMOS" on Oracle\Firebird). All console samples are configured to recreate all the necessary database structures on startup; the ASP.NET samples are configured to update structures on the web application startup. Consequently you shouldn't:

Run two samples simultaneously;

Run any console sample while ASP.NET sample is running (actually you can do this, but in this case you should manually restart ASP.NET sample after running a console sample to allow it to operate with correct structures);

 

In order to run the samples installed with the registered version of DataObjects.NET you need to perform these additional steps:

Create a text file called "ProductKey.txt" containing a single line with your product key;

Save this file to the DataObjects.NET installation folder;

On Windows 2000\XP: add (NTFS) permission to read this file to ASPNET account.

On Windows Server 2003: add (NTFS) permission to read this file to IIS_WPG group.

 

Note: Pay attention to Step 3.

Step 1: Configure IIS

Note: Starting from version 2.0.5 DataObjects.NET installer performs complete configuration of sample web applications (DoPetShop and Demo_WebTransfers), including creation of two virtual folders and setting appropriate permissions. It performs the same actions as described below, but doesn't allow anonymous access to sample web applications (it's necessary only when you're planning to access these samples from different machine\domain or with a browser different from Internet Explorer). So normally this step can be omitted.

 

Map "Demo_WebTransfers" folder to the "Demo_WebTransfers" virtual folder;

Map "DoPetShop\Web" folder to the "DoPetShop" virtual folder. The simplest way to do this is to open the "Properties" window (in Windows Explorer) of the folder, select "Web Sharing", click on the "Share this folder" radio button, type the name of the virtual folder and and press "OK" button.

Allow anonymous access to these applications: run "compmgmt.msc" (Computer Management Snap-in), go to "Services and Applications" -> "Internet Information Services (IIS) Manager" -> "Web Sites" -> "Default Web Site" -> corresponding application ("Demo_WebTransfers" and "DoPetShop") -> Properties (accessible by right-button click) -> "Directory Structure" (tab), click "Edit" button in "Authentication and Access Control" group and check "Enable anonymous access" checkbox;

Ensure, that Everyone group has read and execute permissions in "DoPetShop\Web" and "Demo_WebTransfers" folders;

On Windows 2000\XP: ASPNET account has read and execute permissions in "Samples" folder;

On Windows Server 2003: IIS_WPG group has read and execute permissions in "Samples" folder;

Optional: configure FrontPage Server Extensions 2002 to allow Visual Studio .NET to access web samples remotely.

Step 2: Configure databases

To run the samples on Microsoft SQL Server 2005\2000 or MSDE:

Run DatabaseSetupWizard.exe from the installation folder (you will be offered to run it during the installation process also);

Choose "localhost" database server (you may choose another server also, but in this case you should correct the corresponding connection URL in samples and recompile them).

 

Wizard will create two empty databases named "DataObjectsDotNetDemos" and "DoPetShop" and allow full access to these databases for your local NT account and ASPNET account \ IIS_WPG group.

 

Select "Microsoft SQL Server" (type "1", "Enter") as the database server on the startup of each console sample.

 

To run the samples on Oracle:

Create two empty databases named "Demos" and "DoPetShp" on the local Oracle server (server with the name "localhost"). You can create databases on another server instance, but in this case you should correct corresponding connection URL in the each sample. Keep in mind that length of the database name in Oracle must be less then or equal to 8 characters.

You should create a database user called "admin" with password "admin" in the each database - this account is used by the samples by default, or you can the change connection URL string in each sample.

In Demo_WebTransfers\Web.config: search for:
<appSettings>
  ...
  <add key="ConnectionURL" value="mssql://localhost/DataObjectsDotNetDemos" />
  ...
</appSettings>

Replace it with:
<appSettings>
  ...
  <add key="ConnectionURL" value="oracle://admin:admin@localhost/Demos" />
  ...
</appSettings>

In DoPetShop\Web\Web.config: search for:
<appSettings>
  ...
  <add key="ConnectionURL" value="mssql://localhost/DoPetShop" />
  ...
</appSettings>

Replace it with:
<appSettings>
  ...
  <add key="ConnectionURL" value="oracle://admin:admin@localhost/DoPetShp" />
  ...
</appSettings>

 

Select "Oracle" or "Native Oracle" (type "2" or "3", "Enter") as database server on the startup of each console sample.

 

To run the samples on Firebird:

Create two empty databases named "Demos" and "DoPetShop" on the local Firebird server (server with the name "localhost"). You can create databases on another server instance, but in this case you should correct corresponding connection URL in the each sample. Each database should be created with SQL dialect 3 and UNICODE_FSS encoding. In order to configure database names you should edit file "aliases.conf" in Firebird installation root folder.

You should create a database user called "admin" with password "admin" in the each database - this account is used by samples by default, or you can the change connection URL string in each sample.

In Demo_WebTransfers\Web.config: search for:
<appSettings>
  ...
  <add key="ConnectionURL" value="mssql://localhost/DataObjectsDotNetDemos" />
  ...
</appSettings>

Replace it with:
<appSettings>
  ...
  <add key="ConnectionURL" value="firebird://admin:admin@localhost/Demos" />
  ...
</appSettings>

In DoPetShop\Web\Web.config: search for:
<appSettings>
  ...
  <add key="ConnectionURL" value="mssql://localhost/DoPetShop" />
  ...
</appSettings>

Replace it with:
<appSettings>
  ...
  <add key="ConnectionURL" value="firebird://admin:admin@localhost/DoPetShop" />
  ...
</appSettings>

 

Select "Firebird" (type "5", "Enter") as database server on the startup of each console sample.

Step 3 (optional): Running a debug version of samples

If you're going to run a debug version of samples, ensure that:

 "C:\Debug" folder exists - DataObjects.NET will use this folder to store a debug version of the proxy classes' assembly, its C# source and dumps of domain models. This allows you to debug a code of the proxy classes (e.g. step into it). You can make this folder hidden, specify another location of this folder or disable its usage completely (look FirstStep sample source code).

On Windows 2000\XP: ASPNET account has a permission to read from and write to this folder;

On Windows Server 2003: IIS_WPG group has a permission to read from and write to this folder;

This is all. Each sample (excluding ASP.NET samples) is configured to recreate the database, so it's not necessary to perform this task manually before executing another sample.

 

If you've met some problem while running samples, please, refer to the Frequently Asked Questions (FAQ.pdf) first.