private EntityDefinition GetFilteredEntity(EntityDefinition entity, Version solutionVersion, IDictionary <string, SolutionInfo> crmSolutions) { var filteredRelationships = entity.GetFilteredRelationships(crmSolutions); var filteredColumnSet = entity.GetFilteredColumns(solutionVersion); return(new EntityDefinition(entity.Solution, entity.LogicalName, entity.PrimaryIdAttributeName, entity.EntityNodeType, entity.ActiveStateCode, filteredColumnSet, entity.QueryBuilder, entity.IntroducedVersion, entity.CheckEntityBeforeContentMapRefresh, filteredRelationships)); }
public override Fetch CreateQuery(EntityDefinition ed, IDictionary <string, object> parameters) { // the input links are appended to the query to filter the set of entities if (!parameters.ContainsKey("Links")) { return(null); } var links = parameters["Links"] as ICollection <Link>; if (links == null) { return(null); } var fetch = ed.CreateFetchExpression(); if (Links != null && Links.Any()) { // append the input links to the specified intermediate links var chains = Links.Clone(); SetParameters(chains, links); fetch.Entity.Links = chains; } else { // assign the input links directly to the fetch fetch.Entity.Links = links; } // skip cache for ContentMap fetch.SkipCache = true; return(fetch); }
public override Fetch CreateQuery(EntityDefinition ed, IDictionary <string, object> parameters) { return(ed.CreateFetchExpression()); }
/// <summary> /// Creates a query from an entity definition and a set of input parameters. /// </summary> /// <param name="ed"></param> /// <param name="parameters"></param> /// <returns></returns> public abstract Fetch CreateQuery(EntityDefinition ed, IDictionary <string, object> parameters);
private static DataCollection <Entity> RetrieveCRMRecords(CrmDbContext context, string primaryEntityAttribute, EntityReference reference, EntityDefinition ed, List <Guid> guids) { var fetch = ed.CreateFetch(); //Make Retrive Multiple Query object[] guidArray = guids.Cast <object>().ToArray(); var condition = new Condition(primaryEntityAttribute, ConditionOperator.In, guidArray); if (fetch.Entity.Filters == null || !fetch.Entity.Filters.Any()) { fetch.AddFilter(new Filter { Conditions = new List <Condition> { condition } }); } else { var firstFilter = fetch.Entity.Filters.FirstOrDefault(); if (firstFilter.Conditions == null) { firstFilter.Conditions = new List <Condition>(); } firstFilter.Conditions.Add(condition); } // retrieve a fresh entity which also acts as a backend validation ADXTrace.Instance.TraceInfo(TraceCategory.Application, string.Format("Calling Retrieve Multiple Request for Entity {0} ", EntityNamePrivacy.GetEntityName(reference.LogicalName))); RetrieveMultipleResponse responses = (RetrieveMultipleResponse)context.Service.Execute(fetch.ToRetrieveMultipleRequest()); var entities = responses.EntityCollection.Entities; ADXTrace.Instance.TraceInfo(TraceCategory.Application, string.Format("Retrieve Multiple Response for Entity {0} has Record Count {1} ", EntityNamePrivacy.GetEntityName(reference.LogicalName), responses.EntityCollection.Entities.Count)); return(entities); }