Bhubaneswar, Odisha, India
+91-8328865778
support@softchief.com

CRUD Operation in Console Application using C# in Dynamics 365

CRUD Operation in Console Application using C# in Dynamics 365

The below code can be used when you want to write business logic to perform CRUD (Create, Retrieve, Update and Delete) from C# Console Application to Connect Dynamics 365 Online Environment.

The App ID is copied from Azure Active Directory App Registration Screen. To see how you can Register an application in Azure watch the video below.

 public CrmServiceClient ConnectWithOAuth()
        {
            Console.WriteLine("Connecting to D365 Server...");
            string authType = "OAuth";
            string userName = "XX@XXXX.onmicrosoft.com";
            string password = "XXXXXXXX";
            string url = "https://xxx.crm.dynamics.com";
            string appId = "44fbace3-81ad-42f2-a76a-a7d377fec266";
            string reDirectURI = "https://localhost";
            string loginPrompt = "Auto";
            string ConnectionString = string.Format("AuthType = {0};Username = {1};Password = {2}; Url = {3}; AppId={4}; RedirectUri={5};LoginPrompt={6}",
                                                    authType, userName, password, url, appId, reDirectURI, loginPrompt);

            CrmServiceClient svc = new CrmServiceClient(ConnectionString);
            return svc;
        }
  public void PerformCRUD(CrmServiceClient svc)
        {
            //CREATE
            var myContact = new Entity("contact");
            myContact.Attributes["lastname"] = "Learn";
            myContact.Attributes["firstname"] = "Softchief";
            myContact.Attributes["jobtitle"] = "Consultant";
            Guid RecordID = svc.Create(myContact);
            Console.WriteLine("Contact create with ID - " + RecordID);

            //RETRIEVE  
            Entity contact = svc.Retrieve("contact", new Guid("df4df113-746c-eb11-a812-000d3a3b1114"), new ColumnSet("firstname", "lastname"));
            Console.WriteLine("Contact lastname is - " + contact.Attributes["lastname"]);

            //Retrieve Multiple Record
            QueryExpression qe = new QueryExpression("contact");
            qe.ColumnSet = new ColumnSet("firstname", "lastname");
            EntityCollection ec = svc.RetrieveMultiple(qe);

            for (int i = 0; i < ec.Entities.Count; i++)
            {
                if (ec.Entities[i].Attributes.ContainsKey("firstname"))
                {
                    Console.WriteLine(ec.Entities[i].Attributes["firstname"]);
                }
            }
            Console.WriteLine("Retrieved all Contacts...");

            //UPDATE
            Entity entContact = new Entity("contact");
            entContact.Id = RecordID;
            entContact.Attributes["lastname"] = "Facts";
            svc.Update(entContact);
            Console.WriteLine("Contact lastname updated");


            //DELETE
            svc.Delete("contact", RecordID);

            //Execute
            Entity acc = new Entity("account");
            acc["name"] = "Soft";
            var createRequest = new CreateRequest()
            {
                Target = acc
            };
            svc.Execute(createRequest);


            //Execute Multiple
            var request = new ExecuteMultipleRequest()
            {
                Requests = new OrganizationRequestCollection(),
                Settings = new ExecuteMultipleSettings
                {
                    ContinueOnError = false,
                    ReturnResponses = true
                }
            };

            Entity acc1 = new Entity("account");
            acc1["name"] = "Soft1";
            Entity acc2 = new Entity("account");
            acc2["name"] = "Soft2";

            var createRequest1 = new CreateRequest()
            {
                Target = acc1
            };
            var createRequest2 = new CreateRequest()
            {
                Target = acc2
            };

            request.Requests.Add(createRequest1);
            request.Requests.Add(createRequest2);
            var response = (ExecuteMultipleResponse)svc.Execute(request);

        }