Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En el documento $metadata CSDL, cada tipo de entidad que no es abstracto tiene elementos. los elementos describen los datos relacionados con el tipo de entidad actual. Al recuperar un registro, puede expandir las propiedades de navegación para incluir datos relacionados.
En la tabla siguiente se describen los atributos de los elementos.
| Atributo | Description |
|---|---|
Name |
Nombre de la propiedad de navegación; distingue mayúsculas de minúsculas |
Type |
Tipo de entidad relacionado; puede ser un valor único o una colección de un tipo |
Partner |
El nombre de la propiedad de navegación en el otro lado de la relación |
Nullable="false" |
Si el valor puede ser NULL |
Importante
Hay dos tipos de propiedades de navegación: con valores únicos y con valores de colección. Esta distinción es importante porque las funcionalidades de cada tipo de propiedad de navegación son diferentes.
Al construir una consulta con OData, no hacemos referencia a las relaciones uno a varios, varios a uno o varios a varios. Los dos tipos de propiedades de navegación describen cómo navegar por estas relaciones.
Propiedades de navegación de un solo valor
Cuando una propiedad de navegación hace referencia a un valor único, representa una relación uno a varios que crea una referencia a otro registro de tabla. Normalmente, esta relación se denomina búsqueda. El ejemplo siguiente es la propiedad de navegación de la tabla :
<NavigationProperty
Name="createdby"
Type="mscrm.systemuser"
Nullable="false"
Partner="lk_accountbase_createdby">
<ReferentialConstraint
Property="_createdby_value"
ReferencedProperty="systemuserid" />
</NavigationProperty>
Esta propiedad de navegación con un solo valor conecta varios registros a un único registro. Cada registro tiene una propiedad de navegación con valores de colección denominada que la conecta a los registros que creó el usuario.
Estos valores se almacenan en definiciones de relación. Puede acceder a ellos mediante el SDK o el tipo de entidad Web API , como se describe en la tabla siguiente.
| Atributo | Propiedad OneToManyRelationshipMetadata | Description |
|---|---|---|
Name |
ReferencingEntityNavigationPropertyName |
El nombre de la propiedad de navegación de un solo valor. |
Partner |
ReferencedEntityNavigationPropertyName |
El nombre de la colección de navegación de un solo valor. |
Propiedades de búsqueda
Las propiedades de navegación con un valor único tienen un con un atributo que hace referencia a una propiedad de búsqueda. Las propiedades de búsqueda usan la siguiente convención de nomenclatura: . Obtenga más información sobre las propiedades de búsqueda.
tiene un atributo que identifica el nombre de clave principal del tipo de entidad relacionado.
En la mayoría de los casos, el que se encuentra en la propiedad de búsqueda coincide con el nombre de la propiedad de navegación, excepto cuando la propiedad de navegación con un solo valor representa una búsqueda de varias tablas.
Búsquedas en varias tablas
Cuando la propiedad de navegación de un solo valor forma parte de una búsqueda de varias tablas, o polimórfica, hay una única propiedad de búsqueda que es para más de una propiedad de navegación de un solo valor.
Un tipo de entidad puede tener algo parecido a la siguiente combinación, donde una sola propiedad de búsqueda admite varias propiedades de navegación con un solo valor que representan una búsqueda de varias tablas. Hay una propiedad de navegación con un solo valor para cada tipo de tabla compatible con la búsqueda de varias tablas.
<EntityType
Name="socialprofile"
BaseType="mscrm.crmbaseentity">
<Key>
<PropertyRef Name="socialprofileid" />
</Key>
<Property
Name="_customerid_value" <!-- lookup property -->
Type="Edm.Guid">
<Annotation
Term="Org.OData.Core.V1.Description"
String="Shows the customer that this social profile belongs to." />
</Property>
<NavigationProperty
Name="customerid_contact" <!-- Name different from lookup property -->
Type="mscrm.contact"
Nullable="false"
Partner="Socialprofile_customer_contacts">
<ReferentialConstraint
Property="_customerid_value" <!-- Reference to lookup property -->
ReferencedProperty="contactid" />
</NavigationProperty>
<NavigationProperty
Name="customerid_account" <!-- Name different from lookup property -->
Type="mscrm.account"
Nullable="false"
Partner="Socialprofile_customer_accounts">
<ReferentialConstraint
Property="_customerid_value" <!-- Reference to lookup property -->
ReferencedProperty="accountid" />
</NavigationProperty>
</EntityType>
En estos casos, al establecer el valor de cualquiera de las propiedades de navegación con un solo valor, se establecen todas las demás propiedades de navegación de un solo valor participantes en null. El valor GUID de la propiedad de consulta correspondiente cambia, pero necesita obtener anotaciones específicas para saber a qué tabla se refiere ahora. Más información: Datos de propiedades de búsqueda
Propiedades de navegación valoradas como colección
Cuando una propiedad de navegación se refiere a un valor de colección, representa una relación de varios a uno o de varios a varios. El ejemplo siguiente es la propiedad de navegación de la entidad de cuenta:
<NavigationProperty
Name="Account_Tasks"
Type="Collection(mscrm.task)"
Partner="regardingobjectid_account_task"
/>
Esta propiedad de navegación conecta un registro a muchos registros. Cada tiene una propiedad de navegación con un solo valor denominada que hace referencia a como el objeto con respecto.
La forma en que trabaja con las propiedades de navegación valoradas como colección mediante OData es la misma independientemente de si la relación es de uno a varios o de varios a varios. Ambos se consideran colecciones e interactúan con ellas de la misma manera.
Relaciones de muchos a uno
Una relación de muchos a uno es un reflejo de la relación de uno a muchos. Tiene una propiedad de navegación de un solo valor de partner. En el ejemplo anterior de propiedades de navegación con un solo valor , examinamos la propiedad de navegación con un solo valor para el tipo de entidad.
En el tipo de entidad , existe el partner de la propiedad de navegación valorada como colección denominada .
<NavigationProperty Name="lk_accountbase_createdby"
Type="Collection(mscrm.account)"
Partner="createdby" />
Relaciones de varios a varios
Cuando y de la propiedad de navegación valorada como colección son iguales, representa una relación de varios a varios.
Las relaciones varios a varios tiene algunos detalles de implementación que puede encontrar en los documentos de servicio. Para la mayoría de los casos de uso, puede omitirlos.
Por ejemplo, cada relación de varios a varios tiene una tabla de intersección que la respalda. Estas tablas de intersección tienen tipos de entidad que normalmente tienen cuatro propiedades de solo lectura. En el ejemplo siguiente, el tipo de entidad es una tabla de intersección que admite una relación de muchos a muchos entre los tipos de entidad y .
<EntityType Name="teammembership"
BaseType="mscrm.crmbaseentity">
<Key>
<PropertyRef Name="teammembershipid" />
</Key>
<Property Name="systemuserid"
Type="Edm.Guid" />
<Property Name="versionnumber"
Type="Edm.Int64" />
<Property Name="teammembershipid"
Type="Edm.Guid" />
<Property Name="teamid"
Type="Edm.Guid" />
</EntityType>
No se puede trabajar con tipos de entidad que representen tablas de intersección directamente porque todas las propiedades están configuradas como de solo lectura. Realice operaciones en las respectivas propiedades de navegación valoradas como colección para cada tipo de entidad. Más información: Asociación y desasociación de filas de tabla mediante la API web
Para esta relación de varios a varios, el tipo de entidad tiene la siguiente propiedad de navegación valorada como colección:
<NavigationProperty Name="teammembership_association"
Type="Collection(mscrm.team)"
Partner="teammembership_association" />
El tipo de entidad tiene esta propiedad de navegación valorada como colección:
<NavigationProperty Name="teammembership_association"
Type="Collection(mscrm.systemuser)"
Partner="teammembership_association" />
Estos valores se almacenan en definiciones de relación. Puede acceder a ellos mediante el SDK o el tipo de entidad Web API , como se describe en la tabla siguiente.
| Atributo | Propiedad ManyToManyRelationshipMetadata | Description |
|---|---|---|
Name |
Entity1NavigationPropertyName |
El nombre de la propiedad de navegación valorada como colección para uno de los tipos de entidad |
Partner |
Entity2NavigationPropertyName |
El nombre de la propiedad de navegación valorada como colección para el otro tipo de entidad |
Pasos siguientes
Obtenga información sobre las definiciones de acción.
Definiciones de acción
Consulte también
Operaciones y tipos de API web
Documentos del servicio API web
Web API TiposDeEntidades
Propiedades de api web
Acciones de API web
Funciones de API web
Tipos complejos y de enumeración de API web
Usar la API web de Dataverse
Versión de OData: 4.0 Parte 3: Common Schema Definition Language (CSDL) Plus Errata 03 7.1 Element edm:NavigationProperty