Usar parámetros opcionales
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 enlaces para obtener más información y comprender completamente los escenarios para usar estos parámetros.
Modo de uso
La forma en que use estos parámetros opcionales los flujos depende de si usa el Dataverse SDK para .NET o la API web.
Por lo general, agregará el parámetro a OrganizationRequest.Parameters Collection de la clase de solicitud nombrada.
Nota
No puede especificar estos parámetros utilizando los 7 métodos abreviados expuestos con IOrganizationService. Debe usar la clase de solicitud con nombre con el método IOrganizationService.Execute.
Una excepción es cuando se establece partitionid
, esto 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 estos mensajes con el SDK para .NET
- Consulte los ejemplos más abajo
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 exclusivo de la solución con el parámetro SolutionUniqueName
.
Puede utilizar este parámetro con estos mensajes:
AddPrivilegesRole
Create
(POST)Delete
(DELETE)MakeAvailableToOrganizationTemplate
Update
(PATCH)
Los siguientes ejemplos crean un componente de solución de recursos 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 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 la fila 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
account
tiene detección de duplicados habilitado - Se publica una regla detección de duplicados que verifica si el valor
name
de 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 en un complemento, utilice la colección IExecutionContext.SharedVariables
if (context.SharedVariables.ContainsKey("tag")){
string tagValue = context.SharedVariables["tag"];
}
Los siguientes ejemplos pasan 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
Al usar tablas elásticas con una estrategia de partición, puede pasar un valor de cadena único con el parámetro partitionid
para acceder a los datos de la tabla no relacional dentro de una partición de almacenamiento.
Los siguientes ejemplos utilizan el valor partitionid
de deviceId
al recuperar un registro 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 clave alternativa.
- Obtenga más información sobre el uso de claves alternativas con tablas elásticas
- Más información sobre cómo 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. Al realizar operaciones masivas, el tiempo adicional para estas operaciones individuales puede aumentar el tiempo requerido. Utilizar el parámetro BypassBusinessLogicExecution
cuando desea mejorar el rendimiento al realizar operaciones de datos masivos.
Importante
El usuario que llama debe tener el privilegio prvBypassCustomBusinessLogic
.
El siguiente ejemplo establece el parámetro opcional BypassBusinessLogicExecution
para lógica personalizada síncrona y asíncrona al crear un nuevo registro de cuenta utilizando el SDK para .NET clase CreateRequest.
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 Power Automate Flujos
Cuando se producen operaciones de datos masivos que desencadenan flujos, Dataverse crea trabajos del sistema para ejecutar los flujos. Cuando la cantidad de trabajos del sistema es muy grande, puede causar problemas de rendimiento para el sistema. Si esto ocurre, puede optar por omitir la activación de los flujos utilizando el parámetro opcional SuppressCallbackRegistrationExpanderJob
.
La tabla CallbackRegistration administra los activadores de flujo y hay una operación interna llamada expansor 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
Consulte también
Use estos mensajes con el SDK para .NET
API web: Componer solicitudes HTTP y administrar errores : Otros encabezados
Omitir lógica de negocios personalizada
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).