public void Experiment_For_Selecting_Entity_Metadata() { var connectionString = ConfigurationManager.ConnectionStrings["CrmOrganisation"]; var serviceProvider = new CrmServiceProvider(new ExplicitConnectionStringProviderWithFallbackToConfig() { OrganisationServiceConnectionString = connectionString.ConnectionString }, new CrmClientCredentialsProvider()); var orgService = serviceProvider.GetOrganisationService(); using (orgService as IDisposable) { MetadataFilterExpression entityFilter = new MetadataFilterExpression(LogicalOperator.And); // entityFilter.Conditions.Add(new MetadataConditionExpression("OneToManyRelationships", MetadataConditionOperator.NotEquals, null)); var relationShipQuery = new RelationshipQueryExpression(); MetadataFilterExpression relationShipFilter = new MetadataFilterExpression(LogicalOperator.And); relationShipFilter.Conditions.Add(new MetadataConditionExpression("RelationshipType", MetadataConditionOperator.Equals, RelationshipType.OneToManyRelationship)); relationShipQuery.Criteria = relationShipFilter; var props = new MetadataPropertiesExpression(); props.AllProperties = false; props.PropertyNames.Add("OneToManyRelationships"); EntityQueryExpression entityQueryExpression = new EntityQueryExpression() { Criteria = entityFilter, Properties = props, RelationshipQuery = relationShipQuery }; RetrieveMetadataChangesRequest retrieveMetadataChangesRequest = new RetrieveMetadataChangesRequest() { Query = entityQueryExpression, ClientVersionStamp = null }; RetrieveMetadataChangesResponse response = (RetrieveMetadataChangesResponse)orgService.Execute(retrieveMetadataChangesRequest); } }
public void Experiment_For_Selecting_Entity_Metadata() { var connectionString = ConfigurationManager.ConnectionStrings["CrmOrganisation"]; var serviceProvider = new CrmServiceProvider(new ExplicitConnectionStringProviderWithFallbackToConfig() { OrganisationServiceConnectionString = connectionString.ConnectionString }, new CrmClientCredentialsProvider()); var orgService = serviceProvider.GetOrganisationService(); using (orgService as IDisposable) { MetadataFilterExpression entityFilter = new MetadataFilterExpression(LogicalOperator.And); // entityFilter.Conditions.Add(new MetadataConditionExpression("OneToManyRelationships", MetadataConditionOperator.NotEquals, null)); var relationShipQuery = new RelationshipQueryExpression(); MetadataFilterExpression relationShipFilter = new MetadataFilterExpression(LogicalOperator.And); relationShipFilter.Conditions.Add(new MetadataConditionExpression("RelationshipType", MetadataConditionOperator.Equals, RelationshipType.OneToManyRelationship)); relationShipQuery.Criteria = relationShipFilter; var props = new MetadataPropertiesExpression(); props.AllProperties = false; props.PropertyNames.Add("OneToManyRelationships"); EntityQueryExpression entityQueryExpression = new EntityQueryExpression() { Criteria = entityFilter, Properties = props, RelationshipQuery = relationShipQuery }; RetrieveMetadataChangesRequest retrieveMetadataChangesRequest = new RetrieveMetadataChangesRequest() { Query = entityQueryExpression, ClientVersionStamp = null }; RetrieveMetadataChangesResponse response = (RetrieveMetadataChangesResponse)orgService.Execute(retrieveMetadataChangesRequest); } }
private EntityMetadataCollection GetEntitiesMetadata() { var pluginContext = this.PluginContext; pluginContext.Trace("Retrieving Entity List..."); var entityFilter = new MetadataFilterExpression(LogicalOperator.And); entityFilter.Conditions.Add(new MetadataConditionExpression("IsCustomizable", MetadataConditionOperator.Equals, true)); entityFilter.Conditions.Add(new MetadataConditionExpression("IsIntersect", MetadataConditionOperator.Equals, false)); entityFilter.Conditions.Add(new MetadataConditionExpression("CanBeInManyToMany", MetadataConditionOperator.Equals, true)); var entityProperties = new MetadataPropertiesExpression { AllProperties = false }; entityProperties.PropertyNames.AddRange("LogicalName", "ObjectTypeCode", "DisplayName", "IsCustomEntity", "IconSmallName", "ManyToManyRelationships", "Attributes"); var relationshipProperties = new MetadataPropertiesExpression { AllProperties = false }; relationshipProperties.PropertyNames.AddRange("SchemaName", "Entity1LogicalName", "Entity2LogicalName"); var relationshipQuery = new RelationshipQueryExpression { Properties = relationshipProperties, }; var selectTextAttributesFilter1 = new MetadataFilterExpression(LogicalOperator.And); selectTextAttributesFilter1.Conditions.Add( new MetadataConditionExpression("AttributeType", MetadataConditionOperator.In, new [] { AttributeTypeCode.String, AttributeTypeCode.Memo, })); selectTextAttributesFilter1.Conditions.Add( new MetadataConditionExpression("LogicalName", MetadataConditionOperator.NotIn, new[] { "traversedpath" })); var selectTextAttributesFilter2 = new MetadataFilterExpression(LogicalOperator.Or); selectTextAttributesFilter2.Conditions.Add( new MetadataConditionExpression("IsValidForUpdate", MetadataConditionOperator.Equals, true)); selectTextAttributesFilter2.Conditions.Add( new MetadataConditionExpression("IsPrimaryName", MetadataConditionOperator.Equals, true)); var selectTextAttributesFilter = new MetadataFilterExpression(LogicalOperator.And); selectTextAttributesFilter.Filters.AddRange(selectTextAttributesFilter1, selectTextAttributesFilter2); var selectPotentialStatusAttributesFilter = new MetadataFilterExpression(LogicalOperator.And); selectPotentialStatusAttributesFilter.Conditions.Add(new MetadataConditionExpression("AttributeType", MetadataConditionOperator.In, new[] { AttributeTypeCode.Boolean, AttributeTypeCode.State })); selectPotentialStatusAttributesFilter.Conditions.Add( new MetadataConditionExpression("IsValidForUpdate", MetadataConditionOperator.Equals, true)); var attributeFilter = new MetadataFilterExpression(LogicalOperator.Or); attributeFilter.Filters.AddRange(new List <MetadataFilterExpression>() { selectTextAttributesFilter, selectPotentialStatusAttributesFilter }); var attributeProperties = new MetadataPropertiesExpression() { AllProperties = false }; attributeProperties.PropertyNames.AddRange("LogicalName", "DisplayName", "IsCustomAttribute", "MaxLength"); var attributeQuery = new AttributeQueryExpression() { Criteria = attributeFilter, Properties = attributeProperties }; var query = new EntityQueryExpression { Criteria = entityFilter, Properties = entityProperties, AttributeQuery = attributeQuery, RelationshipQuery = relationshipQuery }; var request = new RetrieveMetadataChangesRequest { Query = query }; var respones = (RetrieveMetadataChangesResponse)pluginContext.OrgCtx.Execute(request); return(respones.EntityMetadata); }