2015-07-01 7 views
5

Dostaję błąd na xrm.saveChanges() Jeśli zrobię UpdateObject podczas AddObject pracuje bez zarzutu, initally Myślałem, że to dlatego, że z kontekstu jak omówiono w tym wątku Dynamics CRM saving Entity Changes - Getting Errors ale wypróbowałem wszystkie opcje omówione tutaj https://msdn.microsoft.com/en-us/library/gg695783.aspx ale nic nie pomogło.Uzyskiwanie błąd na SaveChanges podczas UpdateObject z wcześnie związane jednostki CRM SDK 2015

Mój kod jest `

 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); 
     } 
    } 

Błąd Dostaję jest

> 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 

Każda pomoc będzie mile widziane

+0

Dlaczego tworzysz inny kontekst? – Daryl

+0

Mam dokładnie ten sam problem i zacznę się dziać po aktualizacji do CRM SDK 2015 Znalazłem ten link, ale nadal nie mogę go uruchomić https://social.microsoft.com/Forums/en-US/5abb9b69-bec2 -41fd-aa13-d8c2c22a162c/whats-wrong-with-a-simple-fetchxml-statement? Forum = crmdevelopment – Moy

+0

Czy coś osiągnąłeś? sam problem tutaj! Czy mógłbyś podzielić się swoimi wynikami? –

Odpowiedz

0

Musisz włączyć wcześnie związane jednostki dzwoniąc

_serviceProxy.EnableProxyTypes(); 

na OrganizationServiceProxy instancji.

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

Regeneracja typów proxy powinna rozwiązać problem.

Ponadto, ponieważ jesteś online, upewnij się, że masz najnowszą wersję SDK (nie ma potrzeby, aby je wyłapać, są one dostępne w NuGet).

Powiązane problemy