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 para el lado del servidor — no existe un equivalente a React. Los llamadores de React componen FetchXML como literales de cadena (cadenas de plantilla) y los pasan directamente appp.retrieveRecordsAsync(fetchXml). El servidor sigue haciendo el trabajo pesado (fusión de filtros, paginación, recorte 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