Recuperar una fila de tabla usando un servicio de organización

Nota

¿No está seguro de entidad frente a tabla? Vea Desarrolladores: comprender la terminología en Microsoft Dataverse.

Por lo general, recuperará una fila en función de los resultados de una consulta y los resultados de la consulta deben incluir un identificador único para la fila.

Nota

En los siguientes ejemplos, la variable accountid representa el identificador Guid de una fila de cuenta.

Tiene algunas opciones para definir los datos devueltos cuando recupera una fila. Usará la clase ColumnSet para definir qué valores de columna (atributo) necesita.

Importante

Al recuperar filas, solo debe solicitar los valores de columna que necesita configurando las columnas específicas utilizando el constructor de clases ColumnSet. Aunque el constructor de la clase ColumnSet proporcione una sobrecarga que acepte un parámetro booleano allColumns, no debería utilizar este código de producción. Más información: No recupere todas las columnas de la tabla a través de las API de consulta

Si necesita devolver filas relacionadas, puede incluir una consulta con su solicitud de recuperación para definir qué filas relacionadas devolver.

Recuperación básica

Puede recuperar filas individuales utilizando el método IOrganizationService.Retrieve o estableciendo la propiedad Target de la clase RetrieveRequest en una fila de referencia y usar IOrganizationService.Execute Método.

Este ejemplo muestra cómo se usa el método IOrganizationService.Retrieve Método.

Entity entity = svc.Retrieve("account", accountid, new ColumnSet("name"));
Console.WriteLine("account name: {0}", entity["name"]);

Este ejemplo muestra cómo se usan las clases RetrieveRequest y RetrieveRequest con el método IOrganizationService.Execute .

RetrieveRequest request = new RetrieveRequest()
{
  ColumnSet = new ColumnSet("name"),
  Target = new EntityReference("account", accountid)
};
var response = (RetrieveResponse)svc.Execute(request);
Entity entity = response.Entity;
Console.WriteLine("account name: {0}", entity["name"]);

Nota

La mayor parte del tiempo debe usar el método IOrganizationService.Retrieve .

Use el RetrieveRequest con el método IOrganizationService.Execute para las circunstancias especiales según se describen a continuación. Más información:

Cuando recupera una fila individual, también puede incluir una consulta para incluir filas relacionadas configurando la propiedad RelatedEntitiesQuery de RetrieveRequest.

Puede definir una consulta utilizando cualquiera de las clases derivadas de QueryBase y asociarla con una relación de fila de tabla específica. Agregue un conjunto de pares de consultas y de relaciones a la propiedad RelatedEntitiesQuery mediante un RelationshipQueryCollection.

El siguiente ejemplo incluye filas task y contact relacionadas con la fila account que se está recuperando.


var relationshipQueryCollection = new RelationshipQueryCollection();

var relatedTasks = new QueryExpression("task");
relatedTasks.ColumnSet = new ColumnSet("subject", "description");
var taskRelationship = new Relationship("Account_Tasks");
relationshipQueryCollection.Add(taskRelationship, relatedTasks);


var relatedContacts = new QueryExpression("contact");
relatedContacts.ColumnSet = new ColumnSet("fullname", "emailaddress1");
var contactRelationship = new Relationship("account_primary_contact");
relationshipQueryCollection.Add(contactRelationship, relatedContacts);

var request = new RetrieveRequest()
{
  ColumnSet = new ColumnSet(true),
  RelatedEntitiesQuery = relationshipQueryCollection,
  Target = new EntityReference("account", accountid)
};

RetrieveResponse response = (RetrieveResponse)svc.Execute(request);

Entity retrievedAccount = response.Entity;

Console.WriteLine("Account Name: {0}",retrievedAccount["name"]);

var tasks = retrievedAccount.RelatedEntities[new Relationship("Account_Tasks")];

Console.WriteLine("Tasks:");
tasks.Entities.ToList().ForEach(x => {
  Console.WriteLine(" Task Subject: {0}",x["subject"]);
});

Entity primaryContact = retrievedAccount
  .RelatedEntities[new Relationship("account_primary_contact")]
  .Entities.FirstOrDefault();

Console.WriteLine("Primary Contact Fullname: {0}",primaryContact["fullname"]);

Los resultados del ejemplo pueden tener el siguiente aspecto:

Account Name: City Power & Light (sample)
Tasks:
 Task Subject: Task 1
 Task Subject: Task 2
Primary Contact Fullname: Scott Konersmann (sample)

Más información: Consulta de datos duplicados con el servicio de la organización

Recuperación con una clave alternativa

Si ha configurado una tabla para usar un clave alternativa, puede usar este clave alternativa para definir EntityReference y pasar este valor como RetrieveRequest.Target .

Por ejemplo, si define la columna accountnumber de account para que sea una clave alternativa, puede recuperar una cuenta utilizando el valor de esa columna.

RetrieveRequest request = new RetrieveRequest()
{
ColumnSet = new ColumnSet("name"),
Target = new EntityReference("account", "accountnumber", "0001")
};
var response = (RetrieveResponse)svc.Execute(request);
Entity entity = response.Entity;

Console.WriteLine(entity["name"]);

Si su clave alternativa es un compuesto de varias columnas (atributos), debe definir KeyAttributeCollection. El siguiente ejemplo es para una cuenta que tiene un clave alternativa que incluye los atributos accountnumber y sic.

var keyCollection = new KeyAttributeCollection();
keyCollection.Add("accountnumber", "0001");
keyCollection.Add("sic", "7372");

RetrieveRequest request = new RetrieveRequest()
{
ColumnSet = new ColumnSet("name"),
Target = new EntityReference("account", keyCollection)
};
var response = (RetrieveResponse)svc.Execute(request);
Entity entity = response.Entity;

Console.WriteLine(entity["name"]);

Nota

Las claves alternativas se usan normalmente solo para los escenarios de integración de datos

Recuperar documentos en particiones de almacenamiento

Si está recuperando datos de la tabla almacenados en particiones, asegúrese de especificar la clave de partición cuando recupere esos datos. Más información: Mejore el rendimiento al acceder a los datos de la tabla mediante particiones de almacenamiento

Valores de acceso con formato

El método para obtener acceso a valores con formato en una operación de recuperación es el mismo que usará al obtener acceso a los mismos en los resultados de una consulta. Más información: Obtener acceso a valores con formato.

Consultar también

Crear filas de tabla con el servicio de la organización
Actualizar y eliminar filas de tabla con el servicio de la organización
Asociar y desasociar filas de tablas con el servicio de la organización

Nota

¿Puede indicarnos sus preferencias de idioma de documentación? Realice una breve encuesta. (tenga en cuenta que esta encuesta está en inglés)

La encuesta durará unos siete minutos. No se recopilan datos personales (declaración de privacidad).