What I am currently researching/learning: (If you have anything or great links to share on the subject, please do.)

Often as developers we are stuck with having to do the equivalent of coding-gymnastics to get data from the database (stored in a normalized way for performance and extensibility) on to a User Interface for the end user to read, report, do more data entry.  We have to build multiple joins (inner, outer, cross, etc.) just to get the data we want into something like a DataGrid, and if that doesn't work, we have to get the data in some business layer object (if you are following OO) principals and looping through or "massaging" the data to get it into a "useable form" which is sometimes a pain in the.... well, you get my point.

There are a few Object Relational Mapping (ORM) tools on the market, where "a part" of what they do is to abstract you from this pain, but they cost money.  A LOT of money in some cases.  Well, Microsoft is working on releasing (scheduled for release in 2008) the Microsoft ADO.NET Entity Framework.  Although it is NOT planned to be a full ORM tool in its first release, it will have have the ability to abstract you (the developer) from "how" the data is stored in the database.  No more JOINS! 

Here's the explanation from the Microsoft ADO.NET Entity Team:

The ADO.NET Entity Framework is designed to enable developers to create data access applications by programming against a conceptual application model instead of programming directly against a relational storage schema. The goal is to decrease the amount of code and maintenance required for data-oriented applications. Entity Framework applications provide the following benefits:

  • Applications can work in terms of a more application-centric conceptual model, including types with inheritance, complex members, and relationships.
  • Applications are freed from hard-coded dependencies on a particular data engine or storage schema.
  • Mappings between the conceptual application model and the storage-specific schema can change without changing the application code.
  • Developers can work with a consistent application object model that can be mapped to various storage schemas, possibly implemented in different database management systems.
  • Multiple application models can be mapped to a single storage schema.
  • Language-integrated query support provides compile-time syntax validation for queries against a conceptual model.

If you want to get started on learning how to use it, check out these links taken from the MSDN page for the ADO.NET Entity Framework (found here).

Provides an overview of the features and functionality introduced in the ADO.NET Entity Framework.

Describes how to design and create an Entity Framework application.

Contains conceptual topics, how-to's and tutorials that demonstrate the capabilities of the Entity Framework.

Contains conceptual content describing the Entity Data Model, Object Services, and Entity SQL.

Contains sample applications demonstrating the features and functionality of the Entity Framework.

 

I hope to post more about this topic as I research it further.

~ Robert Shelton