Mike Dodaro, a Microsoft programming writer for ADO.NET, has published Parts 1 and 2 of what promises to be an interesting series of technical articles about the forthcoming ADO.NET 3.0 Entity Data Model (EDM).
Most developers are familiar with the Object/Relational Mapping (ORM) problem: databases use the abstraction of rows in tables, but application programs use the abstraction of classes and objects. Existing ORM frameworks tend to address this mismatch by allowing programming classes to be annotated in order to relate them to the database.
The intent with ADO.NET is more ambitious: We view the ORM problem as just one of a number of services we want to build on the database. Other services include reporting, synchronization, backup, and so on. In order to cover all of these services, we have designed a data model that is similar to the object-oriented idiom that programmers use, while remaining independent of any particular programming language or programming platform. This data model is the Entity Data Model (EDM).
The EDM is a conceptual model for designing the data layer of applications. Entities and relationships in the domain of an application are specified in XML syntax. Both the programming classes used in applications and the storage schema map to this conceptual model.
The paper delves into the Conceptual Schema Definition Language (CSDL) XML syntax to define entities, entity properties, associations, and navigation properties.
Mike promises to "explore the logical groupings of entities and associations called entity sets and association sets that map to tables in storage" in Part 2.
Update 2/28/2007: Mapping 101: Part 1—Object Relational Mapping (ORM) continues the EDM tutorial with an introduction to Store Schema Definition Language (SSDL) and Mapping Schema Language (MSL) files.
Update 2/12/2007: True to his word, Mike posted Entity Data Model 101: Part 2—Entity Containers today on the ADO.NET team blog. Mike introduces the topic as follows:
Click here to find previous OakLeaf posts on ADO.NET 3.0 and the Entity Data Model.
In part one of this article we looked at declarations of entity and association types in conceptual schema definition language (CSDL). Now we have to be specific about where instances of those yypes are stored, which we refer to as “scope”. First, we must distinguish entity and association types from instances of those types.
Instances of entity and association types exist as members of association sets, that is, EntityType and AssociationType define scope using EntitySet and AssociationSet declarations. Second, schema syntax specifies EntitySet and AssociationSet declarations inside an EntityContainer declaration. An EntityContainer collects the sets which should be logically grouped into a single database.