CRM SDK 建立與更新資料

CRM SDK 建立與更新資料

本篇將會介紹如何使用CRM的SDK來建立及更新資料,
有兩種方式可以使用,一種是使用下載來的SDK,不過裡面的資料都是基本型別,
客制的部分就得用另外的方式才能使用。
這裡介紹透過CRM的WebService來新增修改資料。


以下以新增聯絡人來做示範。
首先建立一個Web專案,並且拉幾個TextBox和Button。畫面大概如下:

 

image


性別的部分則到要CRM內看Value是多少。

image

 

得知Value後,就可以設定DropDownList了。

image 

 

再來就是將WebService加入參考了,輸入以下的位置
http://伺服器位置/mscrmservices/2007/CrmServiceWsdl.aspx?uniquename=組織名稱
 image

 

到這準備的差不多了,對Button Click進行撰寫~記得Using CrmSdk


    protected void btnok_Click(object sender, EventArgs e)
        {
            string msg = "";
            try
            {
                CrmService service = new CrmService();
                service.CrmAuthenticationTokenValue = new CrmAuthenticationToken();
                service.CrmAuthenticationTokenValue.OrganizationName = "acc";//組織名稱
                service.CrmAuthenticationTokenValue.AuthenticationType = 0;//認證方式,0是AD認證,1是Passport,2是Spla
                service.Credentials = new System.Net.NetworkCredential("administrator", "pass@word1", "FrensWorkz");
	//這裡使用NetworkCredential,也可用System.Net.CredentialCache.DefaultCredentials
            

                contact newcontact = new contact();//物件名稱同Entity名稱
                newcontact.firstname = txtFirstName.Text;
                newcontact.lastname = txtLastName.Text;
                newcontact.gendercode = new Picklist();
                newcontact.gendercode.Value = Convert.ToInt32(ddlsex.SelectedValue);

                Guid contactGuid = service.Create(newcontact);
                msg = contactGuid.ToString();
            }
            catch (SoapException ex)
            {
                msg = ex.Detail.InnerText;
            }
            catch (Exception ex)
            {
                msg = ex.Message;
            }
            Response.Write(msg);

        }

上面比較特別的地方應該就是PickList,對到CRM上就是下拉式選單。
Value就是在CRM上看到對應的值。
建立成功後會回傳GUID,就是資料表上的PK值。

image

回傳值

image

 

接著回到CRM上,就可以看到剛剛建立的資料。

image

image

 

查看網址列也會有該筆資料的GUID KEY。

image

 

如果要Update資料,就必須要取得GUID KEY才能UPDATE。
假設我們已知GUID的值~在剛剛的註冊頁面新增一個欄位。

image

 

 

 

 

 

程式碼的部分也微調一下~
 


 string msg = "";
            try
            {
                CrmService service = new CrmService();
                service.CrmAuthenticationTokenValue = new CrmAuthenticationToken();
                service.CrmAuthenticationTokenValue.OrganizationName = "acc";//組織名稱
                service.CrmAuthenticationTokenValue.AuthenticationType = 0;//認證方式,0是AD認證,1是Passport,2是Spla
                service.Credentials = new System.Net.NetworkCredential("administrator", "pass@word1", "FrensWorkz");//這裡使用NetworkCredential,也可用System.Net.CredentialCache.DefaultCredentials
            
                contact newcontact = new contact();//物件名稱同Entity名稱
                newcontact.firstname = txtFirstName.Text;
                newcontact.lastname = txtLastName.Text;
                newcontact.gendercode = new Picklist();
                newcontact.gendercode.Value = Convert.ToInt32(ddlsex.SelectedValue);

                if (!string.IsNullOrEmpty(txtGuid.Text))
                {
                    newcontact.contactid = new Key();
                    newcontact.contactid.Value = new Guid(txtGuid.Text);
                    service.Update(newcontact);
                    msg = "更新成功";
                }
                else
                {
                    Guid guid = service.Create(newcontact);
                    msg = guid.ToString();
                }
            }
            catch (SoapException ex)
            {
                msg = ex.Detail.InnerText;
            }
            catch (Exception ex)
            {
                msg = ex.Message;
            }
            Response.Write(msg);

如果是更新資料,就必須要設定Key值,每個Entity都會有一個Key值,通常都是Entity名稱+id,但偶爾有些例外@@。
image

測試更新
image

 

到CRM端看結果
image 

image

 

以上~用WebService的好處就是客製的屬性或Entity它也會幫你做好物件和屬性,
透過DynamicEntity也是可以,不過在編譯的時候就沒辦法幫你先限制好型別了。