modo pulito di fare un upsert (aggiornamento o inserimento) il funzionamento in Dynamics CRM 4

StackOverflow https://stackoverflow.com/questions/4365832

  •  09-10-2019
  •  | 
  •  

Domanda

Al momento, sto usando il seguente codice per eseguire un 'upsert' in CRM

try
{
 crm.Create(c);
} 
catch (SoapException)
{
 crm.Update(c);
}

ho ragione nel ritenere che questo tipo di aggiornamento cancellerà tutte le informazioni esistenti dal mio ente commerciale? E se sì, come posso ottenere l'entità aggiornamento dal repository? Ho bisogno fetch, retrieve, o qualcosa del genere?

Grazie.

È stato utile?

Soluzione

Utilizzare la gestione delle eccezioni per il controllo del flusso è male il 99,99% del tempo; in questo caso tra le altre cose perché non si sa mai quello che la vera ragione per la vostra SoapException è.

Un modo più pulito tanto sarebbe quello di verificare se campo identificativo del tuo record ha un valore; in caso affermativo, fare un aggiornamento, in caso contrario, fare un Crea (e magari aggiungere l'ID risultante per l'oggetto se lo si utilizza ulteriormente). (Abbiamo visto Creare su un disco con un ID in realtà fa un aggiornamento anni fa, ma non siamo mai stati in grado di riprodurlo.)

Oltre a questo, @ckeller ha perfettamente ragione; un attributo che è nullo in oggetto (perché non era nel columnset durante il recupero dal database o non è stato impostato no) non sarà toccato in un aggiornamento.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top