CRM SDK 建立與更新資料
本篇將會介紹如何使用CRM的SDK來建立及更新資料,
有兩種方式可以使用,一種是使用下載來的SDK,不過裡面的資料都是基本型別,
客制的部分就得用另外的方式才能使用。
這裡介紹透過CRM的WebService來新增修改資料。
以下以新增聯絡人來做示範。
首先建立一個Web專案,並且拉幾個TextBox和Button。畫面大概如下:
性別的部分則到要CRM內看Value是多少。
得知Value後,就可以設定DropDownList了。
再來就是將WebService加入參考了,輸入以下的位置
http://伺服器位置/mscrmservices/2007/CrmServiceWsdl.aspx?uniquename=組織名稱
到這準備的差不多了,對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值。
回傳值
接著回到CRM上,就可以看到剛剛建立的資料。
查看網址列也會有該筆資料的GUID KEY。
如果要Update資料,就必須要取得GUID KEY才能UPDATE。
假設我們已知GUID的值~在剛剛的註冊頁面新增一個欄位。
程式碼的部分也微調一下~
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,但偶爾有些例外@@。
以上~用WebService的好處就是客製的屬性或Entity它也會幫你做好物件和屬性,
透過DynamicEntity也是可以,不過在編譯的時候就沒辦法幫你先限制好型別了。