The XDataAccess Project is a data access lightweight framework, for the .NET platform, based on the modularization of SQL code, typically embedded in data access components, in XML files.
The project is motivated by the frequent need to change and recompile data access component's, because of database changes (in the relational schema, or DBMS engine), and strives to lessen the impact of this changes providing a declarative means to store data access sql code.
Some benefits of this approach are:
- Lower coupling with the DBMS engine used. Changing DBMS implies rewriting sql statments (when they are not standard ansi) in a new sql XML catalog and swapping XML files.
- Centralization and separation of SQL code. Having sql code separated and centralized has two benefits. First: better maintance since you dont need to browse in all your solution to find the defective sql code, sql code is in one point. Second: you can split better your dev team in database/sql development on one side, and business logic development on the other, while maintaining 1.
- Change SQL code without recompiling. Usually changes in the relational database schema imply business logic changes, and recompilation, but there are cases where minor changes in the relational schema, imply changes only in the sql code, and business entity population logic, and in those cases you can absorb the change without recompiling by using XDataAccess.
XDataAccess is develped in C# by Gabriel López, released under LGPL license, and uses Microsoft's Data Access Application Block and Configuration Application Block.
Let's get started
The vision of the project is to provide all the features that may facilitate data access logic in the development of data intensive applications.
The desired features for the framework are,
- Modularization of sql code in xml files.
- Support for multiple DBMS (Sql Server, Oracle, etc)
- Support for different locking and concurrency management techinques. The current version does not help manage concurrency in any way, the user is on its own. Future support should include optimistic and pessimistic concurrency management assistance.
- Provide object-relational mapping. Through additional metadata in the xml catalog, and the use of reflection, the framework can select the sql to apply for a certain operation (insert, delete, update of a given object) .
- Provide automatic generation of the xml sql catalog from databases
- Automatic generation of the entire data access layer
- Provide Visual Studio Add-in
Currently supported features are:
- Encapsulation of sql code in xml files
- Support for multiple DBMS (Sql Server, Oracle, etc). Current support for this feature is partial. Current supported clients are: Sql and OleDb. This feature should have much improved support with the upgrade to DAAB v3.
- Provide object-relational structures mapping assitance.This is achieved in the current version, but lacks further testing (testers & bug reports are welcomed :)
Feedback & support
Please send questions and/or feedback!, you can do so by email, or by using the forums.
[ + ] Start a new thread