Beispiel #1
0
        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);
            }
        }
Beispiel #2
0
        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);
            }
        }
Beispiel #3
0
        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);
        }