Several months after Indy.Data was release Microsoft brought LINQ to the
forefront at PDC in 2005. While LINQ will not be officially released until late
2007, obviously LINQ will take over and become the dominant player. Microsoft
has the ability to extend the compiler, while the Indy.Data project does not.
The LINQ project is extremely well thought out and in an amazing number of ways
implemented very similarly to Indy.Data. Indy.Data contains a few advantages
over DLINQ (Data LINQ), as does DLINQ over Indy.Data. In the end it is a
Indy.Data pages and downloads are being preserved for educational purposes
but likely will not be updated or continued.
- VCS now online - We now have a project in a Team Coherence server and
team contributions are now possible.
Currently Indy.Data supports Firebird, and SQL Server. Support for DB2,
Oracle, Interbase and others can easily be added and is planned. If you can help
in testing, please join the Indy Data
Dev yahoo group. For information on setting up your database or
requirements, please see Database
Discussion, Support, Contributions
If you require support, or would like to contribute please join the Indy Data
Dev yahoo group.
Indy.Data is a rewrite of an older version which is in use in
several production systems. It was rewritten to take advantage of C#
specific features and from studying strengths and weaknesses of the first
implementation. In fact, even the first version is a newer implementation in
.NET of a system originally built in Delphi in 1998. The .NET platform allowed
me to implement it in a much more robust manner.
The current library is fully functional with only minimal parts remaining to
be finished. There is of course an endless list of improvements that will be
implemented over time.
Major Unfinished Items
- Class Generator - The class generator is complete for
Firebird. SQL server is nearly complete. SQL server can currently be used by
using classes generated from Firebird databases, or by manually creating the
- Documentation - Of course always a work in progress. For
questions please join the Indy
Data Dev yahoo group.
Not all functions have been ported from the older framework such as
creating DataSets, selecting by primary key, ordering, returning in memory
result sets, and more. These are in the process of being implemented in
Indy.Data. Some of the major features in progress are:
- Dynamic SQL support - In some cases loosely bound SQL
queries are required. In such cases, I've been able to build prototypes of
Indy.Data to support the Select as well as Join clauses of the SQL language.
The disadvantage is that the reading of the output is not type safe, but the
inputs are. So any database changes are still caught during the compilation
- Integrated Custom Tool - The utility to generate the
classes is currently an external tool. I have plans to integrate it directly
into Visual Studio similar to how typed DataSets are implemented.
- Support for other types of Primary Keys - Currently all
table are assumed to have a simple int primary key.
Alternate Where clauses
in Updates - Currently all updates are performed using the primary key. For me
this has been fine as all my tables have a int simple primary key.
- Support for versioned updates - For conflict resolution I
use Firebird which supports a versioned architecture, however very few
databases support this model. Many databases allow similar functionality, but
only using locks. Because of this I plan to add support in the future to
increase performance in contentious systems and still retain data integrity.
- Improved memory and speed efficiency - The library is
well within tolerable limits, but there are always areas to be scrutinized and
- Stored Procedures with result sets - The ability to
create a View based on a stored procedure that returns a result set. Such
stored procedures are common in SQL server, but in other databases views are