2015-07-01 13 views
5

Tôi nhận được lỗi trên xrm.saveChanges() Nếu tôi làm UpdateObject khi AddObject đang làm việc tốt, bước đầu tôi nghĩ đó là vì bối cảnh như đã thảo luận trong chủ đề này Dynamics CRM saving Entity Changes - Getting Errors nhưng tôi đã thử tất cả các tùy chọn được thảo luận ở đây https://msdn.microsoft.com/en-us/library/gg695783.aspx nhưng không có gì giúp đỡ.Bắt lỗi trên SaveChanges khi UpdateObject với các đơn vị đầu bị ràng buộc CRM SDK 2015

Mã của tôi là '

 using (var xrm = new XrmServiceContext("Xrm")) 
     { 
      WriteExampleContacts(xrm); 

      //Create a new contact called Allison Brown. 
      var allisonBrown = new Xrm.Contact 
      { 
       FirstName = "Allison", 
       LastName = "Brown", 
       Address1_Line1 = "23 Market St.", 
       Address1_City = "Sammamish", 
       Address1_StateOrProvince = "MT", 
       Address1_PostalCode = "99999", 
       Telephone1 = "12345678", 
       EMailAddress1 = "[email protected]" 
      }; 

      xrm.AddObject(allisonBrown); 
      xrm.SaveChanges(); 

      WriteExampleContacts(xrm); 



     //Update the e-mail address of Allison Brown and link her to the account Contoso. 

     //allisonBrown.contact_customer_accountsParentCustomerAccount = account; 
     using (var xrm2 = new XrmServiceContext("Xrm")) 
     { 

      xrm.Detach(allisonBrown); 
      xrm2.Attach(allisonBrown); 


      allisonBrown.EMailAddress1 = "[email protected]"; 
      xrm2.UpdateObject(allisonBrown); 
      xrm2.SaveChanges(); 
     } 

     //Update the contact record and then commit the changes to Microsoft Dynamics CRM. 
     } 

     Console.WriteLine("Press any key to exit."); 
     Console.ReadKey(); 
    } 

    /// <summary> 
    /// Use all contacts where the email address ends in @example.com. 
    /// </summary> 
    private static void WriteExampleContacts(XrmServiceContext xrm) 
    { 
     var exampleContacts = xrm.ContactSet 
      .Where(c => c.EMailAddress1.EndsWith("@example.com")); 

     //Write the example contacts. 
     foreach (var contact in exampleContacts) 
     { 
      Console.WriteLine(contact.FullName); 
     } 
    } 

Các lỗi tôi nhận được là

> Microsoft.Xrm.Sdk.SaveChangesException was unhandled 
    HResult=-2146233088 
    Message=An error occured while processing this request. 
    Source=Microsoft.Xrm.Sdk 
    StackTrace: 
     at Microsoft.Xrm.Sdk.Client.OrganizationServiceContext.SaveChanges(SaveChangesOptions options) 
     at Microsoft.Xrm.Sdk.Client.OrganizationServiceContext.SaveChanges() 
     at MuslimAidConsoleApplication.Sample.Main(String[] args)   at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args) 
     at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args) 
     at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() 
     at System.Threading.ThreadHelper.ThreadStart_Context(Object state) 
     at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) 
     at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) 
     at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 
     at System.Threading.ThreadHelper.ThreadStart() 
    InnerException: System.ServiceModel.FaultException 
     HResult=-2146233087 
     Message=The formatter threw an exception while trying to deserialize the message: There was an error while trying to deserialize parameter http://schemas.microsoft.com/xrm/2011/Contracts/Services:request. The InnerException message was 'Error in line 1 position 12522. Element 'http://schemas.datacontract.org/2004/07/System.Collections.Generic:value' contains data from a type that maps to the name 'http://schemas.microsoft.com/xrm/7.1/Contracts:ConcurrencyBehavior'. The deserializer has no knowledge of any type that maps to this name. Consider changing the implementation of the ResolveName method on your DataContractResolver to return a non-null value for name 'ConcurrencyBehavior' and namespace 'http://schemas.microsoft.com/xrm/7.1/Contracts'.'. Please see InnerException for more details. 
     Source=mscorlib 

Bất kỳ trợ giúp sẽ được đánh giá

+0

Tại sao bạn tạo một bối cảnh khác? – Daryl

+0

Tôi đang gặp vấn đề tương tự và bắt đầu xảy ra khi tôi cập nhật lên CRM SDK 2015 Tôi tìm thấy liên kết này nhưng Im vẫn không thể làm cho nó hoạt động https://social.microsoft.com/Forums/en-US/5abb9b69-bec2 -41fd-aa13-d8c2c22a162c/whats-sai-với-một-đơn giản-fetchxml-tuyên bố? Forum = crmdevelopment – Moy

+0

Bạn đã đạt đến bất cứ điều gì? cùng một vấn đề ở đây! bạn có muốn chia sẻ kết quả của mình không? –

Trả lời

0

Bạn phải kích hoạt các tổ chức đầu bị ràng buộc bằng cách gọi

_serviceProxy.EnableProxyTypes(); 

trên dụ OrganizationServiceProxy của bạn.

var cred = new ClientCredentials(); 
cred.UserName.UserName = "your username"; 
cred.UserName.Password = "your password"; 
using (var _serviceProxy = new OrganizationServiceProxy(new Uri("https://[your organization service url here]"), null, cred, null)) 
{ 
    _serviceProxy.EnableProxyTypes(); // Will throw error on save changes if not here 
    var context = new CrmServiceContext(_serviceProxy); 

    context.AddObject(new Opportunity() { Name = "My opportunity" }); 

    context.SaveChanges(); 
} 
0

Tái tạo các loại proxy sẽ giải quyết được vấn đề.

Ngoài ra, vì bạn đang trực tuyến, hãy đảm bảo bạn có phiên bản SDK mới nhất (không cần tìm kiếm chúng xuống, chúng có sẵn trên NuGet).

Các vấn đề liên quan