3.1.1 Abstract Data Model

This section describes a conceptual model of possible data organization that an implementation maintains to participate in this protocol. The described organization is provided to facilitate the explanation of how the protocol behaves. This document does not mandate that implementations adhere to this model as long as their external behavior is consistent with that described in this document.

For this protocol the protocol server maintains lists to store the attributes of each of the following data types:

The implementations of the basic Create, Read, Update, and Delete stored procedures simply insert, read, update or delete items in each of these lists where the MetadataObjectId serves as the primary identifier.

The containment and reference relationships can be captured through additional lists that store the primary identifiers of the related data types.

The attributes and relationships of the types are in the following descriptions.

Property

  • Has fields MetadataObjectId, Name, SettingId, and TypeName.

  • No containment or referential relationships.

Localized name

  • Has fields Lcid, MetadataObjectId, SettingId, and Value.

  • No containment or referential relationships.

Access control entry

  • Has fields PrincipalBinaryForm, PrincipalDisplayName, PrincipalName, and Rights.

  • No containment or referential relationships.

MetadataObject

  • Has fields named Id, Name, IsCached, Object version, and PartitionId.

  • Contains zero or more Properties, zero or more localized names, and zero or more ACEs.

Model

  • Has fields named Id, Name, IsCached, Object version, and PartitionId.

  • Contains zero or more Properties, zero or more localized names, and zero or more ACEs.

  • References zero or more DataClasses and zero or more Entities.

LobSystem

  • Has fields named Id, Name, IsCached, Object version, PartitionId, and SystemType.

  • Contains zero or more Properties, zero or more localized names, zero or more ACEs, zero or more DataClasses, zero or more Entities, zero or more LobSystemInstances, and zero or more Business Logic Modules.

LobSystemInstance

  • Has fields named Id, Name, IsCached, Object version, PartitionId, and LobSystemId.

  • Contains zero or more Properties, zero or more localized names, and zero or more ACEs.

  • Contained by exactly one LobSystem.

DataClass

  • Has fields named Id, Name, IsCached, Object version, PartitionId, Active, LobSystemId, ModelId, Namespace, and Version.

  • Contains zero or more Properties, zero or more localized names, zero or more ACEs, zero or more Methods, and zero or more MethodInstances.

  • Contained by exactly one LobSystem.

  • At most one DataClass or Entity is active across all DataClasses and Entities that have the same name and namespace.

Entity

  • Has fields named Id, Name, IsCached, Object version, PartitionId, Active, LobSystemId, ModelId, Namespace, CacheUsage, Description, and EstimatedInstanceCount.

  • Contains zero or more Properties, zero or more localized names, zero or more ACEs, zero or more Methods, zero or more MethodInstances, zero or more Identifiers, zero or more Actions, and zero or more AssociationGroups.

  • Contained by exactly one LobSystem.

  • References an Action as its default Action.

  • At most one DataClass or Entity is active across all DataClasses and Entities that have the same name and namespace.

Identifier

  • Has fields named Id, Name, IsCached, Object version, PartitionId, EntityId, OrdinalNumber, and TypeName.

  • Contains zero or more Properties, zero or more localized names, and zero or more ACEs.

  • Contained by exactly one Entity.

Method

  • Has fields named Id, Name, IsCached, Object version, PartitionId, LobName, IsStatic, and EntityId.

  • Contains zero or more Properties, zero or more localized names, zero or more ACEs, zero or more FilterDescriptors, zero or more Parameters, zero or more MethodInstances, and zero or more Associations.

  • Contained by either exactly one Entity or exactly one DataClass.

MethodInstance

  • Has fields named Id, Name, IsCached, Object version, PartitionId, MethodId, MethodInstanceType, ReturnTypeDescriptorId, and IsDefault.

  • Contains zero or more Properties, zero or more localized names, and zero or more ACEs.

  • References zero or one TypeDescriptors.

  • Contained by exactly one Method.

  • Contained by either exactly one Entity or exactly one DataClass.

  • If the MethodInstance has a ReturnTypeDescriptor the MethodInstance references the TypeDescriptor that corresponds to the ReturnTypeDescriptor. Otherwise, the MethodInstance MUST NOT reference any TypeDescriptors.

  • The Type attribute is NOT "AssociationNavigator", "Associator", "Disassociator", "BulkAssociationNavigator", or "BulkAssociatedIdEnumerator".

Association

  • Has fields named Id, Name, IsCached, Object version, PartitionId, MethodId, MethodInstanceType, ReturnTypeDescriptorId, IsDefault, AssociationGroupId, DestinationEntityName, DestinationEntityNamespace, SourceEntityNames, and SourceEntityNamespaces.

  • Contains zero or more Properties, zero or more localized names, and zero or more ACEs.

  • References zero or one TypeDescriptors.

  • References two or more Entities.

  • Contained by exactly one Method.

  • Contained by either exactly one Entity or exactly one DataClass.

  • If the Association has a ReturnTypeDescriptor, the Association references the TypeDescriptor that corresponds to the ReturnTypeDescriptor. Otherwise, the Association references no TypeDescriptors.

  • References the Entity that corresponds to the destination of the Association.

  • References the Entities that correspond to the sources of the Association.

  • Does not reference an Entity if that Entity is not a source or destination for the Association.

  • The Type attribute is "AssociationNavigator," "Associator," "Disassociator," "BulkAssociationNavigator," or "BulkAssociatedIdEnumerator."

Parameter

  • Has fields named Id, Name, IsCached, Object version, Direction, PartitionId, MethodId, OrdinalNumber, and RootTypeDescriptorId.

  • Contains zero or more Properties, zero or more localized names, zero or more ACEs, and zero or more TypeDescriptors.

  • Contained by exactly one Method.

  • If the Parameter contains one or more TypeDescriptors, exactly one TypeDescriptor is not contained by any other TypeDescriptor. The TypeDescriptor that is not contained by any other TypeDescriptor corresponds to the ReturnTypeDescriptor of the Parameter.

TypeDescriptor

  • Has fields named Id, Name, IsCached, Object version, PartitionId, AssociationId, AssociationReferenceEntityName, AssociationReferenceEntityNamespace, AssociationReferenceName, ChildrenContainRules, ContainsFilterDescriptor, ContainsIdentifier, ContainsReadOnly, FilterDescriptorId, Flags, IdentifierId, IdentifierReferenceEntityName, IdentifierReferenceEntityNamespace, LobName, ParameterId, ParentTypeDescriptorId, SerializedRules, and TypeName.

  • Contains zero or more Properties, zero or more localized names, zero or more ACEs, zero or more TypeDescriptors, and zero or more DefaultValues.

  • References zero or one Identifiers, zero or one Associations, and zero or one FilterDescriptors.

  • If the TypeDescriptor references a FilterDescriptor, that FilterDescriptor references the TypeDescriptor.

  • Contained by exactly one Parameter or exactly one TypeDescriptor.

FilterDescriptor

  • Has fields named Id, Name, IsCached, Object version, PartitionId, FilterField, FilterType, and MethodId.

  • Contains zero or more Properties, zero or more localized names, and zero or more ACEs.

  • Contained by exactly one Method.

  • References one or more TypeDescriptors.

  • If the FilterDescriptor references a TypeDescriptor, that TypeDescriptor references the FilterDescriptor.

DefaultValue

  • Has fields named NeedsTypeReflectionResolution, WcfMarshallableValue, WcfMarshallableValueAssemblyQualifiedTypeName, WcfMarshallableValueTypeName, MethodInstanceId, MethodInstanceName, and TypeDescriptorId.

  • Contained by exactly one TypeDescriptor.

AssociationGroup

  • Has fields named Id, Name, IsCached, Object version, PartitionId, and EntityId, AssociationEntityNames, AssociationEntityNamespaces, AssociationIds, and AssociationNames.

  • Contains zero or more Properties, zero or more localized names, zero or more ACEs, and zero or more AssociationReferences.

  • Contained by exactly one Entity.

AssociationReference

  • Has fields named _associationName, _entityName, _entityNamespace, AssociationGroupId, AssociationGroupObjectVersion, AssociationId, Id, IsReverse, and PartitionId.

  • References exactly one Association.

  • Contained by exactly one AssociationGroup.

Action

  • Has fields named Id, Name, IsCached, Object version, PartitionId, EntityId, ImageUrl, IsOpenedInNewWindow, Position, and Url.

  • Contains zero or more Properties, zero or more localized names, zero or more ACEs, and zero or more ActionParameters.

  • Contained by exactly one Entity.

ActionParameter

  • Has fields named Id, Name, IsCached, Object version, PartitionId, ActionId, and Index.

  • Contains zero or more Properties, zero or more localized names, and zero or more ACEs.

  • Contained by exactly one Action.

Cache Version Stamp

  • Has fields named CacheLine, Counter, PartitionId, and Timestamp.

  • No containment or referential relationships.