FetchXMLBuilder
A FetchXMLBuilder classe fornece uma API fluente para construir e manipular consultas FetchXML programaticamente. Em vez de construir strings XML brutas, você pode usar métodos fortemente tipados para definir entidades, colunas, filtros, condições, ordens de ordenação e link-entities.
Nota de React
FetchXMLBuilderé uma utilidade Blazor do lado do servidor — não existe equivalente ao React. Os chamadores React compõem FetchXML como literais de string (strings de template) e os passam diretamente parappp.retrieveRecordsAsync(fetchXml). O servidor ainda faz o trabalho pesado (fusão de filtros, paginação, ajuste de segurança) assim que o FetchXML chega.
Criando uma Consulta
Crie uma nova FetchXMLBuilder com uma consulta vazia, ou analise uma string FetchXML existente.
// Crie uma consulta vazia
var builder = new FetchXMLBuilder();
builder.Fetch.Entity.TableName = "contact";
// Ou analisar uma string FetchXML existente
var builder = new FetchXMLBuilder(existingFetchXml);
Seleção de Colunas
Adicione colunas individuais com AddColumn, ou defina AllColumns = true para recuperar todas as colunas. A configuração AllColumns remove quaisquer colunas adicionadas individualmente.
// Adicionar colunas específicas
builder.Fetch.Entity.AddColumn("fullname");
builder.Fetch.Entity.AddColumn("emailaddress1");
// Ou recuperar todas as colunas
builder.Fetch.Entity.AllColumns = true;
Adição de Filtros
Adicione filtros a uma entidade ou entidade-link com AddFilter, e então adicione condições ao filtro. Cada condição especifica uma coluna, um operador e um valor.
var filter = builder.Fetch.Entity.AddFilter(LogicalOperator.And);
var condition = filter.AddCondition();
condition.Column = "statecode";
condition.Operator = ConditionOperator.Equal;
condition.Value = "0";
// Adicionar um grupo de condição OR
var orFilter = builder.Fetch.Entity.AddFilter(LogicalOperator.Or);
var nameCondition = orFilter.AddCondition();
nameCondition.Column = "fullname";
nameCondition.Operator = ConditionOperator.Like;
nameCondition.Value = "%smith%";
var emailCondition = orFilter.AddCondition();
emailCondition.Column = "emailaddress1";
emailCondition.Operator = ConditionOperator.Like;
emailCondition.Value = "%smith%";
Juntando tabelas relacionadas
Use AddLinkEntity para juntar uma tabela relacionada. Defina as TableNamepropriedades , From, To, e Operator para definir a junção. Filtros podem ser adicionados às entidades de enlace assim como a entidade principal.
var linkEntity = builder.Fetch.Entity.AddLinkEntity();
linkEntity.TableName = "account";
linkEntity.From = "accountid";
linkEntity.To = "parentcustomerid";
linkEntity.Operator = JoinOperator.LeftOuter;
linkEntity.Alias = "acct";
// Adicionar colunas da tabela vinculada
linkEntity.AddColumn("name");
// Adicionar filtros à tabela vinculada
var linkFilter = linkEntity.AddFilter();
var linkCondition = linkFilter.AddCondition();
linkCondition.Column = "statecode";
linkCondition.Operator = ConditionOperator.Equal;
linkCondition.Value = "0";
Resultados da Classificação
Use AddSortOrder para definir a ordem de ordenação. Você pode especificar o nome da coluna e se deseja ordenar em ordem decrescente.
// Ordenar pelo nome completo ascendente
builder.Fetch.Entity.AddSortOrder("fullname");
// Ordenar por createdon descendente
builder.Fetch.Entity.AddSortOrder("createdon", descending: true);
Paginação
Controla paginação com , CountPage, e PagingCookie propriedades no Fetch elemento. Defina ReturnRecordCount = true para incluir a contagem total de recordes nos resultados.
builder.Fetch.Count = 50;
builder.Fetch.Page = 1;
builder.Fetch.ReturnRecordCount = true;
// Para páginas seguintes, defina o cookie de paginação a partir do resultado anterior
builder.Fetch.Page = 2;
builder.Fetch.PagingCookie = previousPagingCookie;
Análise do FetchXML Existente
Passe uma string FetchXML existente para o construtor analisar e manipular. Isso é útil para modificar consultas de visualizações ou outras fontes.
var fetchXml = @"<fetch>
<entity name='contact'>
<attribute name='fullname' />
<filter>
<condition attribute='statecode' operator='eq' value='0' />
</filter>
</entity>
</fetch>";
var builder = new FetchXMLBuilder(fetchXml);
// Modificar a consulta analisada
builder.Fetch.Entity.AddColumn("emailaddress1");
builder.Fetch.Entity.AddSortOrder("fullname");
Gerando a string FetchXML
Chamada ToString() para gerar a string FetchXML. A saída é deterministicamente ordenada: atributos, depois ordens de ordenação, depois filtros, e então entidades de link. Dentro de cada grupo, os elementos são ordenados alfabeticamente.
var fetchXmlString = builder.ToString();
FetchXMLBuilder Classe
Propriedades
Nome | Tipo | Padrão | Descrição |
|---|---|---|---|
Fetch | FetchElement | Obtém o elemento de busca raiz da consulta. |
Fetch