コード例 #1
0
        private static void CreateOneToManyAttribute(OrganizationServiceProxy service, string referencedEntityName, string referencingEntityName, string referencedEntityDisplayName,
                                                     string attributeSchemaName, string attributeDisplayName, string attributeDescription)
        {
            CreateOneToManyRequest createOneToManyRelationshipRequest = new CreateOneToManyRequest
            {
                OneToManyRelationship =
                    new OneToManyRelationshipMetadata
                {
                    ReferencedEntity            = referencingEntityName,
                    ReferencingEntity           = referencedEntityName,
                    SchemaName                  = publisherPrefix + referencedEntityName + "_" + referencingEntityName + "_" + attributeSchemaName,
                    AssociatedMenuConfiguration = new AssociatedMenuConfiguration
                    {
                        Behavior = AssociatedMenuBehavior.UseLabel,
                        Group    = AssociatedMenuGroup.Details,
                        Label    = new Label(referencedEntityDisplayName, 1033),
                        Order    = 10000
                    },
                    CascadeConfiguration = new CascadeConfiguration
                    {
                        Assign   = CascadeType.NoCascade,
                        Delete   = CascadeType.RemoveLink,
                        Merge    = CascadeType.NoCascade,
                        Reparent = CascadeType.NoCascade,
                        Share    = CascadeType.NoCascade,
                        Unshare  = CascadeType.NoCascade
                    }
                },
                Lookup = new LookupAttributeMetadata
                {
                    SchemaName    = publisherPrefix + attributeSchemaName,
                    DisplayName   = new Label(attributeDisplayName, 1033),
                    RequiredLevel = new AttributeRequiredLevelManagedProperty(AttributeRequiredLevel.None),
                    Description   = new Label(attributeDescription, 1033)
                }
            };

            CreateOneToManyResponse createOneToManyRelationshipResponse =
                (CreateOneToManyResponse)service.Execute(
                    createOneToManyRelationshipRequest);

            Console.WriteLine(
                "The one-to-many relationship has been created between {0} and {1}.",
                referencedEntityName, referencingEntityName);
        }
コード例 #2
0
        public bool CreateOneToMany(IOrganizationService service, XRMSpeedyRelationship relationship, string prefix, int languageCode)
        {
            try
            {
                CreateOneToManyRequest createOneToManyRelationshipRequest = new CreateOneToManyRequest
                {
                    OneToManyRelationship = new OneToManyRelationshipMetadata
                    {
                        ReferencedEntity            = relationship.Entity1,
                        ReferencingEntity           = relationship.Entity2,
                        SchemaName                  = relationship.SchemaName,
                        AssociatedMenuConfiguration = new AssociatedMenuConfiguration
                        {
                            Behavior = AssociatedMenuBehavior.UseLabel,
                            Group    = AssociatedMenuGroup.Details,
                            Label    = new Label(relationship.Entity1.Substring(0, 1).ToUpper() + relationship.Entity1.Substring(1), languageCode),
                            Order    = 10000
                        },
                        CascadeConfiguration = new CascadeConfiguration
                        {
                            Assign   = CascadeType.NoCascade,
                            Delete   = CascadeType.RemoveLink,
                            Merge    = CascadeType.Cascade,
                            Reparent = CascadeType.NoCascade,
                            Share    = CascadeType.NoCascade,
                            Unshare  = CascadeType.NoCascade
                        }
                    },
                    Lookup = relationship.PrimaryField
                };

                CreateOneToManyResponse createOneToManyRelationshipResponse =
                    (CreateOneToManyResponse)service.Execute(createOneToManyRelationshipRequest);

                return(true);
            }
            catch (FaultException <OrganizationServiceFault> )
            {
                throw;
            }
        }
コード例 #3
0
        /// <summary>
        /// Create and configure the organization service proxy.
        /// Create one-to-many relationship.
        /// Create many-to-many relationship.
        /// Optionally delete any entity records that were created for this sample.
        /// </summary>
        /// <param name="serverConfig">Contains server connection information.</param>
        /// <param name="promptForDelete">When True, the user will be prompted to delete all
        /// created entities.</param>
        public void Run(ServerConnection.Configuration serverConfig, bool promptForDelete)
        {
            try
            {
                // Connect to the Organization service.
                // The using statement assures that the service proxy will be properly disposed.
                using (_serviceProxy = new OrganizationServiceProxy(serverConfig.OrganizationUri, serverConfig.HomeRealmUri, serverConfig.Credentials, serverConfig.DeviceCredentials))
                {
                    // This statement is required to enable early-bound type support.
                    _serviceProxy.EnableProxyTypes();

                    //<snippetWorkWithRelationships1>

                    bool eligibleCreateOneToManyRelationship =
                        EligibleCreateOneToManyRelationship("account", "campaign");

                    if (eligibleCreateOneToManyRelationship)
                    {
                        CreateOneToManyRequest createOneToManyRelationshipRequest =
                            new CreateOneToManyRequest
                        {
                            OneToManyRelationship =
                                new OneToManyRelationshipMetadata
                            {
                                ReferencedEntity            = "account",
                                ReferencingEntity           = "campaign",
                                SchemaName                  = "new_account_campaign",
                                AssociatedMenuConfiguration = new AssociatedMenuConfiguration
                                {
                                    Behavior = AssociatedMenuBehavior.UseLabel,
                                    Group    = AssociatedMenuGroup.Details,
                                    Label    = new Label("Account", 1033),
                                    Order    = 10000
                                },
                                CascadeConfiguration = new CascadeConfiguration
                                {
                                    Assign   = CascadeType.NoCascade,
                                    Delete   = CascadeType.RemoveLink,
                                    Merge    = CascadeType.NoCascade,
                                    Reparent = CascadeType.NoCascade,
                                    Share    = CascadeType.NoCascade,
                                    Unshare  = CascadeType.NoCascade
                                }
                            },
                            Lookup = new LookupAttributeMetadata
                            {
                                SchemaName    = "new_parent_accountid",
                                DisplayName   = new Label("Account Lookup", 1033),
                                RequiredLevel = new AttributeRequiredLevelManagedProperty(AttributeRequiredLevel.None),
                                Description   = new Label("Sample Lookup", 1033)
                            }
                        };


                        CreateOneToManyResponse createOneToManyRelationshipResponse =
                            (CreateOneToManyResponse)_serviceProxy.Execute(
                                createOneToManyRelationshipRequest);

                        _oneToManyRelationshipId =
                            createOneToManyRelationshipResponse.RelationshipId;
                        _oneToManyRelationshipName =
                            createOneToManyRelationshipRequest.OneToManyRelationship.SchemaName;

                        Console.WriteLine(
                            "The one-to-many relationship has been created between {0} and {1}.",
                            "account", "campaign");
                    }

                    //</snippetWorkWithRelationships1>

                    //<snippetWorkWithRelationships2>

                    bool accountEligibleParticipate =
                        EligibleCreateManyToManyRelationship("account");
                    bool campaignEligibleParticipate =
                        EligibleCreateManyToManyRelationship("campaign");

                    if (accountEligibleParticipate && campaignEligibleParticipate)
                    {
                        CreateManyToManyRequest createManyToManyRelationshipRequest =
                            new CreateManyToManyRequest
                        {
                            IntersectEntitySchemaName = "new_accounts_campaigns",
                            ManyToManyRelationship    = new ManyToManyRelationshipMetadata
                            {
                                SchemaName         = "new_accounts_campaigns",
                                Entity1LogicalName = "account",
                                Entity1AssociatedMenuConfiguration =
                                    new AssociatedMenuConfiguration
                                {
                                    Behavior = AssociatedMenuBehavior.UseLabel,
                                    Group    = AssociatedMenuGroup.Details,
                                    Label    = new Label("Account", 1033),
                                    Order    = 10000
                                },
                                Entity2LogicalName = "campaign",
                                Entity2AssociatedMenuConfiguration =
                                    new AssociatedMenuConfiguration
                                {
                                    Behavior = AssociatedMenuBehavior.UseLabel,
                                    Group    = AssociatedMenuGroup.Details,
                                    Label    = new Label("Campaign", 1033),
                                    Order    = 10000
                                }
                            }
                        };

                        CreateManyToManyResponse createManytoManyRelationshipResponse =
                            (CreateManyToManyResponse)_serviceProxy.Execute(
                                createManyToManyRelationshipRequest);


                        _manyToManyRelationshipId =
                            createManytoManyRelationshipResponse.ManyToManyRelationshipId;
                        _manyToManyRelationshipName =
                            createManyToManyRelationshipRequest.ManyToManyRelationship.SchemaName;

                        Console.WriteLine(
                            "The many-to-many relationship has been created between {0} and {1}.",
                            "account", "campaign");
                    }

                    //</snippetWorkWithRelationships2>

                    // Publish the customization changes.
                    _serviceProxy.Execute(new PublishAllXmlRequest());


                    //<snippetWorkWithRelationships.RetrieveRelationship>

                    //You can use either the Name or the MetadataId of the relationship.

                    //Retrieve the One-to-many relationship using the MetadataId.
                    RetrieveRelationshipRequest retrieveOneToManyRequest =
                        new RetrieveRelationshipRequest {
                        MetadataId = _oneToManyRelationshipId
                    };
                    RetrieveRelationshipResponse retrieveOneToManyResponse =
                        (RetrieveRelationshipResponse)_serviceProxy.Execute(retrieveOneToManyRequest);

                    Console.WriteLine("Retrieved {0} One-to-many relationship by id", retrieveOneToManyResponse.RelationshipMetadata.SchemaName);

                    //Retrieve the Many-to-many relationship using the Name.
                    RetrieveRelationshipRequest retrieveManyToManyRequest =
                        new RetrieveRelationshipRequest {
                        Name = _manyToManyRelationshipName
                    };
                    RetrieveRelationshipResponse retrieveManyToManyResponse =
                        (RetrieveRelationshipResponse)_serviceProxy.Execute(retrieveManyToManyRequest);

                    Console.WriteLine("Retrieved {0} Many-to-Many relationship by Name", retrieveManyToManyResponse.RelationshipMetadata.MetadataId);

                    //</snippetWorkWithRelationships.RetrieveRelationship>

                    DeleteRequiredRecords(promptForDelete);
                }
            }

            // Catch any service fault exceptions that Microsoft Dynamics CRM throws.
            catch (FaultException <Microsoft.Xrm.Sdk.OrganizationServiceFault> )
            {
                // You can handle an exception here or pass it back to the calling method.
                throw;
            }
        }
コード例 #4
0
        public void Run()
        {
            objCRMHelper  = new CRMHelper();
            _serviceProxy = objCRMHelper.setSrvice();

            try
            {
                //<snippetWorkWithRelationships1>
                bool eligibleCreateOneToManyRelationship = EligibleCreateOneToManyRelationship("rah_country", "rah_territory");
                Console.WriteLine("fileName" + fileName);

                if (eligibleCreateOneToManyRelationship)
                {
                    CreateOneToManyRequest createOneToManyRelationshipRequest = new CreateOneToManyRequest
                    {
                        OneToManyRelationship = new OneToManyRelationshipMetadata
                        {
                            ReferencedEntity            = "rah_country",
                            ReferencingEntity           = "rah_territory",
                            SchemaName                  = "rah_country_rah_territory",
                            AssociatedMenuConfiguration = new AssociatedMenuConfiguration
                            {
                                // Behavior = AssociatedMenuBehavior.UseLabel,
                                Behavior = AssociatedMenuBehavior.UseLabel,
                                Group    = AssociatedMenuGroup.Details,
                                Label    = new Label("MASTER Country", 1033),
                                Order    = 10000
                            },
                            CascadeConfiguration = new CascadeConfiguration
                            {
                                Assign   = CascadeType.NoCascade,
                                Delete   = CascadeType.Restrict,
                                Merge    = CascadeType.NoCascade,
                                Reparent = CascadeType.NoCascade,
                                Share    = CascadeType.NoCascade,
                                Unshare  = CascadeType.NoCascade
                            }
                        },
                        Lookup = new LookupAttributeMetadata
                        {
                            SchemaName    = "rah_parent_rah_countryid",
                            DisplayName   = new Label("Country Lookup", 1033),
                            RequiredLevel = new AttributeRequiredLevelManagedProperty(AttributeRequiredLevel.None),
                            Description   = new Label("MASTer Sample rah_country Lookup", 1033)
                        }
                    };
                    CreateOneToManyResponse createOneToManyRelationshipResponse =
                        (CreateOneToManyResponse)_serviceProxy.Execute(
                            createOneToManyRelationshipRequest);

                    _oneToManyRelationshipId =
                        createOneToManyRelationshipResponse.RelationshipId;
                    _oneToManyRelationshipName =
                        createOneToManyRelationshipRequest.OneToManyRelationship.SchemaName;

                    Console.WriteLine(
                        "The One-to-Many relationship has been created between {0} and {1}.",
                        "rah_country", "rah_territory");
                }
            }



            catch (FaultException <OrganizationServiceFault> ex)
            {
                Console.WriteLine("The application terminated with an error.");
                Console.WriteLine("Timestamp: {0}", ex.Detail.Timestamp);
                Console.WriteLine("Code: {0}", ex.Detail.ErrorCode);
                Console.WriteLine("Message: {0}", ex.Detail.Message);
                Console.WriteLine("Plugin Trace: {0}", ex.Detail.TraceText);
                Console.WriteLine("Inner Fault: {0}",
                                  null == ex.Detail.InnerFault ? "No Inner Fault" : "Has Inner Fault");
            }
            catch (System.TimeoutException ex)
            {
                Console.WriteLine("The application terminated with an error.");
                Console.WriteLine("Message: {0}", ex.Message);
                Console.WriteLine("Stack Trace: {0}", ex.StackTrace);
                Console.WriteLine("Inner Fault: {0}",
                                  null == ex.InnerException.Message ? "No Inner Fault" : ex.InnerException.Message);
            }
            catch (System.Exception ex)
            {
                Console.WriteLine("The application terminated with an error.");
                Console.WriteLine(ex.Message);

                // Display the details of the inner exception.
                if (ex.InnerException != null)
                {
                    Console.WriteLine(ex.InnerException.Message);

                    FaultException <OrganizationServiceFault> fe
                        = ex.InnerException
                          as FaultException <Microsoft.Xrm.Sdk.OrganizationServiceFault>;
                    if (fe != null)
                    {
                        Console.WriteLine("Timestamp: {0}", fe.Detail.Timestamp);
                        Console.WriteLine("Code: {0}", fe.Detail.ErrorCode);
                        Console.WriteLine("Message: {0}", fe.Detail.Message);
                        Console.WriteLine("Plugin Trace: {0}", fe.Detail.TraceText);
                        Console.WriteLine("Inner Fault: {0}",
                                          null == fe.Detail.InnerFault ? "No Inner Fault" : "Has Inner Fault");
                    }
                }
            }
        }