Usar parâmetros opcionais

O Dataverse fornece um conjunto de parâmetros opcionais ou valores de cabeçalho de solicitação que um desenvolvedor de um aplicativo cliente pode usar para modificar o comportamento de solicitações individuais. Este artigo descreve os valores de parâmetro e os cabeçalhos de solicitação que você pode usar para obter os comportamentos necessários.

Note

Este artigo apresenta esses parâmetros, mas não os explica detalhadamente. Siga os links para obter mais informações para entender completamente os cenários para usar esses parâmetros.

Como usar

Como você usa esses parâmetros opcionais depende se você está usando o SDK do Dataverse para .NET ou API Web.

Normalmente, você adicionará o parâmetro à Coleção OrganizationRequest.Parameters da classe de solicitação nomeada.

Note

Não é possível especificar esses parâmetros usando os sete métodos abreviados expostos com o IOrganizationService. Você deve usar a classe de solicitação nomeada com o método IOrganizationService.Execute.

Uma exceção é quando se define o partitionid. O partitionid está definido como um atributo da instância da entidade. Mais informações: executar uma operação de dados com a partição especificada

Mais informações:

Associar um componente de solução a uma solução

Ao executar operações de dados em um componente de solução, você pode associá-lo a uma solução especificando o nome exclusivo da solução com o SolutionUniqueName parâmetro.

Você pode usar esse parâmetro com estas mensagens:

  • AddPrivilegesRole
  • Create (POST)
  • Delete (DELETE)
  • MakeAvailableToOrganizationTemplate
  • Update (PATCH)

Os exemplos a seguir criam um componente de solução de recurso da Web e o adicionam à solução com o nome exclusivo 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);
}

Mais informações:

Mais informações:

Suprimir a detecção de duplicatas

Se você quiser que o Dataverse gere um erro quando um novo registro criado ou um registro que você atualiza corresponder às regras de detecção de duplicidade de outro registro, você deverá criar ou atualizar a linha usando o parâmetro SuppressDuplicateDetection com um valor falso.

Os exemplos a seguir retornam um erro quando o seguinte é verdadeiro:

  • A Detecção de Duplicações é habilitada para o ambiente quando um registro é criado ou atualizado.
  • A tabela account tem a detecção de duplicatas habilitada
  • Uma regra de detecção duplicada é publicada que verifica se o valor name da conta é uma correspondência exata para uma linha existente
  • Há uma conta existente com o nome 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,
        };
    }
}

Mais informações:

Adicionar uma variável compartilhada ao contexto de execução do plug-in

Use o parâmetro tag para incluir um valor de variável compartilhada acessível dentro de um plug-in. Essas informações extras permitem que um plug-in aplique a lógica que depende do aplicativo cliente.

Note

Esse parâmetro destina-se a que os aplicativos cliente possam definir qualquer valor desejado. Nenhum recurso de Microsoft deve exigir que você defina um valor específico no código do aplicativo cliente para habilitar comportamentos diferentes.

Para acessar o valor em um plug-in, use a coleção IExecutionContext.SharedVariables

if (context.SharedVariables.ContainsKey("tag")){
    string tagValue = context.SharedVariables["tag"];
}

Os exemplos a seguir aceitam este valor: A string value ao criar um registro de conta.

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);
}

Mais informações: Variáveis compartilhadas

Executar uma operação de dados com a partição especificada

Ao usar tabelas elásticas com uma estratégia de particionamento, você pode passar um valor de cadeia de caracteres exclusivo com o partitionid parâmetro para acessar dados de tabela não relacionais em uma partição de armazenamento.

Os exemplos a seguir usam o partitionid valor de deviceId ao recuperar um contoso_sensordata registro.

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, você pode usar o valor partitionid usando o estilo alternativo de chave.

Ignorar a lógica personalizada do Dataverse

A lógica síncrona deve ser aplicada durante a transação e pode afetar significativamente o desempenho de operações individuais. Com operações em massa, o tempo extra para essas operações individuais pode aumentar o tempo necessário. Use o BypassBusinessLogicExecution parâmetro quando quiser melhorar o desempenho ao executar operações de dados em massa.

Importante

O usuário de chamada deve ter o prvBypassCustomBusinessLogic privilégio.

O exemplo a seguir define o BypassBusinessLogicExecutionparâmetro opcional para lógica personalizada síncrona e assíncrona ao criar um novo registro de conta usando o SDK para .NET classe 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);
}

Saiba mais sobre maneiras de ignorar a lógica personalizada do Dataverse

Ignorar fluxos do Power Automate

Quando ocorrem operações de dados em massa que disparam fluxos, o Dataverse cria trabalhos do sistema para executar os fluxos. Quando o número de jobs do sistema é grande, isso pode causar problemas de desempenho para o sistema. Se ocorrerem problemas de desempenho, você poderá optar por contornar o acionamento dos fluxos usando o parâmetro opcional SuppressCallbackRegistrationExpanderJob.

A tabela CallbackRegistration gerencia gatilhos de fluxo e há uma operação interna chamada expander que chama os gatilhos de fluxo registrados.

Note

Quando essa opção for usada, os proprietários do fluxo não receberão uma notificação de que sua lógica de fluxo foi ignorada.

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);
}

Mais informações: Contornar fluxos do Power Automate

Exibir dados sem máscara

Quando você tiver uma coluna configurada para usar o recurso de visualização de regras de mascaramento , você poderá usar o UnMaskedData parâmetro opcional para solicitar que o valor desmascarado seja retornado.

RetrieveMultipleRequest request = new()
{
   Query = query,
   ["UnMaskedData"] = true
};

var response = (RetrieveMultipleResponse)service.Execute(request);

Saiba mais sobre como recuperar dados desmascarados.

Consulte também

Use mensagens com o SDK para .NET
Web API: Compor solicitações HTTP e tratar erros: outros cabeçalhos
Ignorar lógica de negócios personalizada