2016-02-05 72 views
1

我使用的是動態CRM 2011 C#SDK編寫,並從我的前提DynamicsCRM讀取數據2011年更新帳戶C#

我目前從https://msdn.microsoft.com/en-us/library/gg695803%28v=crm.5%29.aspx

開始接觸這個基本的例子

因此,創造新的客戶或聯繫人,並將其寫入動力學似乎沒有問題,是這樣的:

var companyTest = new Xrm.Account 
{ 
    Name = "Company Test1", 
    AccountNumber = "1", 
    Address1_Country = "D", 
    Address1_City = "M", 
    Telephone1 = "12345678", 
    EMailAddress1 = "[email protected]" 
}; 

xrm.AddObject(companyTest); 
xrm.SaveChanges(); 

現在我不完全明白,我怎麼可以改變我創建的帳戶的一些信息。

所以,我想這一點:

var companyTest = new Xrm.Account 
{ 
    Name = "Company Test1", 
    AccountNumber = "1", 
    Address1_Country = "D", 
    Address1_City = "M", 
    Telephone1 = "12345678", 
    EMailAddress1 = "[email protected]" // change the email for instance 
}; 

xrm.UpdateObject(companyTest); 
xrm.SaveChanges(); 

但這樣做我得到以下錯誤時:「System.InvalidOperationException」

我該怎麼做這個正常嗎?

另外,如果有人能推薦一本關於DynamicsCRM SDK的書籍或視頻課程,我將不勝感激。

回答

2

在您的示例中,您使用的是早期綁定和XrmContext來添加和修改帳戶。

如果你已經有了上下文中的帳戶(這意味着你正在執行在創建後馬上更新,你只需要改變companyTest內的值:

var companyTest = new Xrm.Account 
{ 
    Name = "Company Test1", 
    AccountNumber = "1", 
    Address1_Country = "D", 
    Address1_City = "M", 
    Telephone1 = "12345678", 
    EMailAddress1 = "[email protected]" 
}; 

xrm.AddObject(companyTest); 
xrm.SaveChanges(); 

companyTest.AccountNumber = "2"; 
xrm.UpdateObject(companyTest); 
xrm.SaveChanges(); 

,如果你正在做的更新這不是上下文中又一個的記錄,您將需要提供記錄的ID,這樣的事情:

如果你只是用CRM SDK和CRUD操作開始,我建議後期使用而不是IOrganizationServiceXrmContext,這很容易。

+0

非常感謝。我不得不在更新之前使用它:xrm.Attach(companyTestUpdate);在這裏找到它:http://stackoverflow.com/questions/11455592/ms-dynamics-crm-2011-sdk-update-entity-record-using-late-binding –

+1

我會建議不要使用XrmServiceContext進行更新,因爲它即使屬性沒有改變也可能觸發工作流程。最好直接使用IOrganizationService。另外,如果您開始使用測試框架來保持您的自定義功能儘可能強大,比如[this](https://github.com/jordimontana82/fake-xrm-easy)一個在Git上。 – Jordi

+0

@Jordi我將會談談XrmVirtual UG的單元測試。我計劃展示我們的兩個框架。 – Daryl