2015-07-01 22 views
5

sto errore di salire sul xrm.saveChanges() se faccio updateObject mentre AddObject sta lavorando bene, inizialmente ho pensato che è a causa del contesto come discusso in questo thread Dynamics CRM saving Entity Changes - Getting Errors ma ho provato tutte le opzioni discusse qui https://msdn.microsoft.com/en-us/library/gg695783.aspx ma nulla ha aiutato.errore Salire su SaveChanges mentre updateObject con soggetti legati presto CRM SDK 2015

Il mio codice è `

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

L'errore che sto ottenendo è

> 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 

Qualsiasi aiuto sarebbe apprezzato

+0

Perché stai creando un altro contesto? – Daryl

+0

Sto avendo lo stesso identico problema e inizio a succedere quando ho aggiornato a CRM SDK 2015 ho trovato questo link ma non riesco ancora a farlo funzionare https://social.microsoft.com/Forums/en-US/5abb9b69-bec2 -41fd-aa13-d8c2c22a162c/whats-wrong-with-a-simple-fetchxml-statement? Forum = crmdevelopment – Moy

+0

Hai raggiunto qualcosa? stesso problema qui! ti dispiacerebbe condividere i tuoi risultati? –

risposta

0

è necessario abilitare entità presto legati chiamando

_serviceProxy.EnableProxyTypes(); 

sull'istanza OrganizationServiceProxy.

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

Rigenerare i tipi di proxy dovrebbe risolvere il problema.

Inoltre, dal momento che sei online, assicurati di avere l'ultima versione dell'SDK (non c'è bisogno di dar loro la caccia, sono disponibili su NuGet).