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 los flujos depende de si usa el Dataverse SDK para .NET o la API web.
Normalmente, agregará el parámetro a la colección OrganizationRequest.Parameters de la clase de solicitud con nombre.
Nota
No puede especificar estos parámetros mediante los siete métodos abreviados expuestos con el IOrganizationService. Debe usar la clase de solicitud con nombre con el método IOrganizationService.Execute.
Una excepción es cuando se configura 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 estos 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 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
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 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. 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 que llama debe tener el privilegio prvBypassCustomBusinessLogic
.
El siguiente ejemplo establece el BypassBusinessLogicExecution
parámetro opcional 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 el número de trabajos del sistema es grande, puede causar problemas de rendimiento para el sistema. Si se producen problemas de rendimiento, puede optar por omitir la activación de los flujos mediante 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