I developed a couple of applications with relational databases using the traditional way of sending SQL strings to the database. The problem with this approach is of course that your SQL strings are never verified at compile time, instead first at runtime will you know if they are syntactically correct. If you have chosen to work with a strongly typed language like C# you most likely favor compile time verification before runtime verification.
In one project where we had strong financial backing and high demands of quality we eliminated this risk with SQL strings by using a code generator called Persistence which would generate access classes to manipulate our database. This meant we would use classes with proper methods to update and manipulate rows and columns in the database tables without having to use any SQL strings. These SQL strings were of course there, but they were automatically generated from the database and encapsulated in these access classes. I’m not sure if Persistence still exists as a product or as a company. The company behind the product, Persistence Software was acquired last year by Progress Software. I’m not sure if they killed Persistemce or what happened to it.
Microsoft has an excellent database in SQL Server and some first-rate programming languages, but no good mapping between them. Since Microsoft owns these languages it didn’t need to do it the Persistence way with code generators, instead Microsoft can and will add access capabilities directly to these languages or more correctly to the CLR. This will be part of the next C# version (3.0) and will be part of the Visual Studio code named Orca and is called Linq which comes in different implementations. So far there’s DLinq for querying relational data and XLinq for querying XML.The only existing DLinq implementation is the one for SQL Server. I believe that for DLinq to be really successful there need to be an Oracle implantation as well. I’m sure there’s possible to hack one together using ODBC or some other Oracle API, but to get good performance it need to be built into its query engine, that is directly into Oracle. This is of course nothing that Microsoft or any third party can do on their own; this is a job for Oracle themselves. However, Oracle is not the most supportive of Microsoft and will likely try to hinder DLinq from getting popular. Unless there’s a huge demand for integrated DLinq support in Oracle by some large users, I don’t see Oracle helping out Microsoft voluntarily. And without DLinq fully working with Oracle I don’t see it as becoming the standard way of developing database applications for Windows. Microsoft must get Oracle to add full integrated DLinq support in its database.
So Microsoft have a real dilemma here. In order to make DLinq a success it needs Oracle to support it. However Oracle will only support it if it’s already a success and its user demands it. A classic catch 22 situation. Let’s hope that Microsoft and Oracle can work together on this one.