FetchXMLBuilder
La FetchXMLBuilder clase proporciona una API fluida para construir y manipular consultas FetchXML de forma programática. En lugar de construir cadenas XML en bruto, puedes usar métodos fuertemente tipados para definir entidades, columnas, filtros, condiciones, órdenes de ordenamiento y entidades de enlace.
Nota de React
FetchXMLBuilderes una utilidad Blazor del lado del servidor — no existe un equivalente de React para la clase. Lo que React tiene en su lugar es el constructor de consultas FetchXML, un componente que edita una consulta visualmente y te entrega el FetchXML; un llamador que ya conoce la consulta la compone como un literal de cadena y se la pasa appp.retrieveRecordsAsync(fetchXml). El servidor sigue haciendo el trabajo duro — fusión de filtros, paginación, ajuste de seguridad — una vez que llega el FetchXML.
Creación de una consulta
Crea una nueva FetchXMLBuilder con una consulta vacía, o analiza una cadena FetchXML existente.
// Crear una consulta vacía
var builder = new FetchXMLBuilder();
builder.Fetch.Entity.TableName = "contact";
// O analizar una cadena FetchXML existente
var builder = new FetchXMLBuilder(existingFetchXml);
Selección de columnas
Añade columnas individuales con AddColumn, o configura AllColumns = true para recuperar todas las columnas. Configurar AllColumns elimina cualquier columna añadida individualmente.
// Añadir columnas específicas
builder.Fetch.Entity.AddColumn("fullname");
builder.Fetch.Entity.AddColumn("emailaddress1");
// O recuperar todas las columnas
builder.Fetch.Entity.AllColumns = true;
Añadir filtros
Añadir filtros a una entidad o entidad-enlace con AddFilter, y luego añadir condiciones al filtro. Cada condición especifica una columna, un operador y un valor.
var filter = builder.Fetch.Entity.AddFilter(LogicalOperator.And);
var condition = filter.AddCondition();
condition.Column = "statecode";
condition.Operator = ConditionOperator.Equal;
condition.Value = "0";
// Añadir un grupo de condición 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%";
Unir tablas relacionadas
Úsalo AddLinkEntity para unirte a una tabla relacionada. Establezca las TableNamepropiedades , From, To, y Operator para definir la unión. Se pueden añadir filtros a las entidades de enlace igual que la entidad principal.
var linkEntity = builder.Fetch.Entity.AddLinkEntity();
linkEntity.TableName = "account";
linkEntity.From = "accountid";
linkEntity.To = "parentcustomerid";
linkEntity.Operator = JoinOperator.LeftOuter;
linkEntity.Alias = "acct";
// Añadir columnas desde la tabla enlazada
linkEntity.AddColumn("name");
// Añadir filtros a la tabla enlazada
var linkFilter = linkEntity.AddFilter();
var linkCondition = linkFilter.AddCondition();
linkCondition.Column = "statecode";
linkCondition.Operator = ConditionOperator.Equal;
linkCondition.Value = "0";
Resultados de clasificación
Úsalo AddSortOrder para definir el orden de ordenación. Puedes especificar el nombre de la columna y si ordenar en orden descendente.
// Ordenar por nombre completo ascendente
builder.Fetch.Entity.AddSortOrder("fullname");
// Ordenar por createdon descendente
builder.Fetch.Entity.AddSortOrder("createdon", descending: true);
Paginación
Controla la paginación con el Count, , y PagingCookie propiedades en el Fetch elementoPage. Configura ReturnRecordCount = true para incluir el recuento total de récords en los resultados.
builder.Fetch.Count = 50;
builder.Fetch.Page = 1;
builder.Fetch.ReturnRecordCount = true;
// Para las páginas siguientes, establece la cookie de paginación del resultado anterior
builder.Fetch.Page = 2;
builder.Fetch.PagingCookie = previousPagingCookie;
Análisis de FetchXML existente
Pasa una cadena FetchXML existente al constructor para que la analize y manipule. Esto es útil para modificar consultas desde vistas u otras fuentes.
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 la consulta analizada
builder.Fetch.Entity.AddColumn("emailaddress1");
builder.Fetch.Entity.AddSortOrder("fullname");
Generación de la cadena FetchXML
Llamada ToString() para generar la cadena FetchXML. La salida está ordenada determinísticamente: atributos, luego ordenes de ordenación, luego filtros y finalmente entidades de enlace. Dentro de cada grupo, los elementos se ordenan alfabéticamente.
var fetchXmlString = builder.ToString();
FetchXMLBuilder Clase
Propiedades
Nombre | Tipo | Default | Descripción |
|---|---|---|---|
Fetch | FetchElement | Obtiene el elemento raíz de búsqueda de la consulta. |
Fetch