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.
Dataverse proporciona un conjunto de parámetros opcionales o valores de encabezado de solicitud que un desarrollador de una aplicación cliente puede usar para modificar el comportamiento de solicitudes individuales. Este artículo describe los valores de los parámetros y los encabezados de solicitud que puede usar para obtener los comportamientos que necesita.
Nota
Este artículo presenta estos parámetros, pero no los explica en profundidad. Siga los vínculos para obtener más información y comprender completamente los escenarios de uso de estos parámetros.
Modo de uso
La forma en que use estos parámetros opcionales depende de si usa el SDK de Dataverse para .NET o la API web.
Normalmente, agregará el parámetro a la colección OrganizationRequest.Parameters de la clase de solicitud especificada.
Nota
No puede especificar estos parámetros mediante los siete métodos de acceso directo expuestos con el IOrganizationService. Debe usar la clase de solicitud especificada con el método IOrganizationService.Execute.
Una excepción es al establecer el partitionid. El partitionid se establece como un atributo de la instancia de la entidad. Más información: Realizar una operación de datos con la partición especificada
Más información:
- Use mensajes con el SDK para .NET
- Consulte los siguientes ejemplos
Asociar un componente de solución con una solución
Cuando realiza operaciones de datos en un componente de la solución, puede asociarlo con una solución especificando el nombre único de la solución con el parámetro SolutionUniqueName.
Puede utilizar este parámetro con estos mensajes:
AddPrivilegesRole-
Create(POST) -
Delete(BORRAR) MakeAvailableToOrganizationTemplate-
Update(PATCH)
Los siguientes ejemplos crean un componente de solución de recurso web y lo agregan a la solución con el nombre único de ExampleSolution.
static void CreateWebResourceInSolution(IOrganizationService service)
{
Entity webResource = new("webresource");
webResource["displayname"] = "Simple HTML web resource";
webResource["content"] = "PCFET0NUWVBFIGh0bWw+CjxodG1sPgogIDxib2R5PgogICAgPGgxPkhlbGxvIFdvcmxkPC9oMT4KICA8L2JvZHk+CjwvaHRtbD4=";
webResource["webresourcetype"] = new OptionSetValue(1);
webResource["name"] = "sample_SimpleHTMLWebResource.htm";
webResource["description"] = "An example HTML web resource";
CreateRequest request = new();
request.Target = webResource;
request["SolutionUniqueName"] = "ExampleSolution";
service.Execute(request);
}
Más información:
Más información:
- Crear una tabla personalizada usando código
- Crear y actualizar definiciones de tabla mediante la API web
Suprimir la detección de duplicados
Si quiere que Dataverse emita un error cuando un registro nuevo que cree o un registro que actualiza coincida con las reglas de detección de duplicados de otro registro, debe crear o actualizar el registro usando el parámetro SuppressDuplicateDetection con un valor de false.
Los siguientes ejemplos devuelven un error cuando se cumple lo siguiente:
- Detección de duplicados está habilitado para el entorno cuando se crea o actualiza una fila.
- La tabla
accounttiene detección de duplicados habilitado - Se publica una regla detección de duplicados que verifica si el valor
namede la cuenta coincide exactamente con una fila existente - Hay una cuenta existente con el nombre
Sample Account.
static void DemonstrateSuppressDuplicateDetection(IOrganizationService service)
{
Entity account = new("account");
account["name"] = "Sample Account";
CreateRequest request = new()
{
Target = account
};
request.Parameters.Add("SuppressDuplicateDetection", false);
try
{
service.Execute(request);
}
catch (FaultException<OrganizationServiceFault> ex)
{
throw ex.Detail.ErrorCode switch
{
-2147220685 => new InvalidOperationException(ex.Detail.Message),
_ => ex,
};
}
}
Más información:
Agregar una variable compartida al contexto de ejecución del complemento
Use el parámetro tag para incluir un valor de variable compartida que sea accesible dentro de un complemento. Esta información adicional permite que un complemento aplique la lógica que depende de la aplicación cliente.
Nota
Este parámetro está destinado a que las aplicaciones cliente puedan establecer cualquier valor que deseen. Ninguna característica de Microsoft debería requerir que establezca un valor específico en el código de su aplicación cliente para habilitar diferentes comportamientos.
Para acceder al valor desde un complemento, utilice la colección IExecutionContext.SharedVariables
if (context.SharedVariables.ContainsKey("tag")){
string tagValue = context.SharedVariables["tag"];
}
Los siguientes ejemplos aceptan este valor: A string value al crear un registro de cuenta.
static void DemonstrateTag(IOrganizationService service)
{
Entity account = new("account");
account["name"] = "Sample Account";
CreateRequest request = new()
{
Target = account
};
request.Parameters.Add("tag", "A string value");
service.Execute(request);
}
Más información: Variables compartidas
Realizar una operación de datos con la partición especificada
Cuando se utilizan tablas elásticas con una estrategia de creación de particiones, puede pasar un valor de cadena único con el parámetro partitionid para acceder a datos de tablas no relacionales dentro de una partición de almacenamiento.
Los siguientes ejemplos utilizan el valor partitionid de deviceId al recuperar un registro de contoso_sensordata.
private static Entity RetrieveRecord(
IOrganizationService service,
Guid contosoSensorDataId,
string deviceId,
string sessionToken)
{
EntityReference entityReference = new("contoso_sensordata", contosoSensorDataId);
RetrieveRequest request = new()
{
ColumnSet = new ColumnSet("contoso_value"),
Target = entityReference,
["partitionId"] = deviceId, //To identify the record
["SessionToken"] = sessionToken //Pass the session token for strong consistency
};
var response = (RetrieveResponse)service.Execute(request);
return response.Entity;
}
Como alternativa, puede utilizar el valor partitionid usando el estilo de tecla alternativa.
- Obtenga más información sobre el uso de claves suplentes con tablas elásticas
- Más información sobre especificar un partitionId
Omitir lógica de Dataverse personalizada
La lógica sincrónica debe aplicarse durante la transacción y puede afectar significativamente el rendimiento de las operaciones individuales. Con las operaciones masivas, el tiempo adicional para estas operaciones individuales puede aumentar el tiempo necesario. Utilizar el parámetro BypassBusinessLogicExecution cuando desea mejorar el rendimiento al realizar operaciones de datos masivos.
Importante
El usuario invocador debe tener el privilegio prvBypassCustomBusinessLogic.
El siguiente ejemplo establece el
static void DemonstrateBypassBusinessLogicExecution(IOrganizationService service)
{
Entity account = new("account");
account["name"] = "Sample Account";
CreateRequest request = new()
{
Target = account
};
request.Parameters.Add("BypassBusinessLogicExecution", "CustomSync,CustomAsync");
service.Execute(request);
}
Obtenga más información sobre las formas de evitar la lógica Dataverse personalizada.
Omitir la ejecución de flujos de Power Automate
Cuando se producen operaciones de datos masivos que desencadenan flujos, Dataverse crea trabajos del sistema para ejecutar los flujos. Cuando el número de procesos del sistema es grande, puede causar problemas de rendimiento para el sistema. Si se producen problemas de rendimiento, puede optar por evitar desencadenar los flujos mediante el parámetro opcional SuppressCallbackRegistrationExpanderJob.
La tabla CallbackRegistration administra los activadores de flujo y hay una operación interna llamada expander que llama a los desencadenadores registrados del flujo.
Nota
Cuando se usa esta opción, los propietarios del flujo no recibirán una notificación de que se omitió su lógica de flujo.
static void DemonstrateSuppressCallbackRegistrationExpanderJob(IOrganizationService service)
{
Entity account = new("account");
account["name"] = "Sample Account";
CreateRequest request = new()
{
Target = account
};
request.Parameters.Add("SuppressCallbackRegistrationExpanderJob", true);
service.Execute(request);
}
Más información: Omitir flujos de Power Automate
Devolver datos sin enmascarar
Cuando tiene una columna configurada para usar la característica en vista previa de reglas de enmascaramiento, puede usar el parámetro opcional UnMaskedData para solicitar que se devuelva el valor desenmascarado.
RetrieveMultipleRequest request = new()
{
Query = query,
["UnMaskedData"] = true
};
var response = (RetrieveMultipleResponse)service.Execute(request);
Más información acerca de recuperar datos desenmascarados.
Consulte también
Use mensajes con el SDK para .NET
API web: Componer solicitudes HTTP y administrar errores : Otros encabezados
Omitir lógica empresarial