Utilizzare le classi dell'identità con associazione anticipata per la creazione, l'aggiornamento e l'eliminazione

 

Data di pubblicazione: gennaio 2017

Si applica a: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online

In Microsoft Dynamics 365 (online e locale), è possibile utilizzare il modello di dati dell'entità e le classi di entità con associazione anticipata create con lo strumento di generazione del codice (CrmSvcUtil) per lavorare con i dati aziendali. È possibile utilizzare le classi con associazione anticipata con o senza il contesto del servizio di organizzazione, tuttavia è consigliabile utilizzare la classe di contesto del servizio di organizzazione generata. Il contesto tenta di gestire efficientemente le relazioni, ma il codice scritto a mano può generalmente essere più efficiente.

Nota

Gli aggiornamenti ai record sono eseguiti secondo un ordine specifico. Vengono elaborate innanzitutto le entità primarie e quindi vengono elaborate le entità correlate. Se viene effettuata una modifica dall'entità primaria per una ricerca o per un attributo dell'entità correlata, e in seguito un'entità correlata aggiorna lo stesso attributo, il valore dell'entità correlata viene mantenuto. In genere, un valore dell'attributo di tipo lookup e il suo equivalente in RelatedEntities (o nelle proprietà di navigazione) per la stessa relazione non dovrebbero essere utilizzati contemporaneamente.

In questo argomento

Utilizzare la classe OrganizationServiceContext

Creare un nuovo record dell'entità utilizzando le classi dell'identità con associazione anticipata e la classe OrganizationServiceContext

Aggiornare un nuovo record dell'entità utilizzando classi dell'identità con associazione anticipata e la classe OrganizationServiceContext

Eliminare un nuovo record dell'entità utilizzando classi dell'identità con associazione anticipata e la classe OrganizationServiceContext

Utilizzare le classi dell'identità con associazione anticipata usa senza un contesto di oggetto

Utilizzare la classe OrganizationServiceContext

La classe di contesto del servizio di organizzazione creata dallo strumento di generazione del codice e che eredita da OrganizationServiceContext viene utilizzata per registrare le modifiche apportate ai dati. Il contesto registra gli oggetti che sono istanze dei tipi di entità che rappresentano i dati in Microsoft Dynamics 365. È possibile creare, modificare ed eliminare gli oggetti nel contesto del servizio dell'organizzazione e Microsoft Dynamics 365 registra le modifiche apportate a questi oggetti. Quando il metodo OrganizationServiceContext.SaveChanges viene chiamato, Microsoft Dynamics 365 genera ed esegue i comandi che eseguono le equivalenti istruzioni di inserimento, aggiornamento o eliminazione rispetto ai dati in Microsoft Dynamics 365.

Quando si lavora con le classi dell'identità con associazione anticipata, si utilizzano il nome dello schema attributo e il nome dell'entità per specificare un'entità o un attributo da utilizzare. I nomi dello schema attributo sono definiti in EntityMetadata.SchemaName e AttributeMetadata.SchemaName o è possibile utilizzare i nomi di classe e proprietà visualizzati nel file generato dal codice. Nell'esempio seguente viene illustrato come assegnare un valore all'attributo di posta elettronica della nuova istanza del contatto.

Contact contact = new Contact();contact.EMailAddress1 = “sonny@contoso.com”;

Per un esempio di codice completo che illustra come utilizzare le classi dell'identità con associazione anticipata per eseguire le azioni di base del database, vedere Esempio: creare, recuperare, aggiornare ed eliminare i record (associazione anticipata).

Creare un nuovo record dell'entità utilizzando le classi dell'identità con associazione anticipata e la classe OrganizationServiceContext

Quando si desidera inserire i dati in Microsoft Dynamics 365 utilizzando il modello di dati dell'entità, è necessario creare un'istanza di un qualunque tipo di entità e aggiungere l'oggetto in un contesto del servizio di organizzazione. Il contesto del servizio dell'organizzazione deve registrare l'oggetto prima di poter salvare l'oggetto in Microsoft Dynamics 365.

Quando si crea un nuovo record dell'entità, aggiungere l'oggetto nel contesto del servizio di organizzazione utilizzando il metodo OrganizationServiceContext.AddObject.

Nell'esempio seguente viene illustrato come creare un'istanza e salvare un nuovo record di contatto utilizzando il modello di dati dell'entità. Viene anche illustrato come accedere a un attributo personalizzato.

OrganizationServiceContext orgContext =new OrganizationServiceContext(_serviceProxy);
Contact contact = new Contact()   
 {
   FirstName = "Charles",
   LastName = "Brown",
   Address1_Line1 = "123 Main St.",
   Address1_City = "Des Moines",
   Address1_StateOrProvince = "IA",
   Address1_PostalCode = "21254",
   new_twittername = "Chuck",
   Telephone1 = "123-234-5678"
 }; 
orgContext.AddObject(contact);orgContext.SaveChanges();

In seguito all'aggiunta di un oggetto al contesto e prima che il metodo OrganizationServiceContext.SaveChanges sia chiamato, il contesto genera un ID per il nuovo oggetto. Viene generata un'eccezione contenente il SaveChangesResults dal metodo SaveChanges se un qualunque aggiornamento ai dati di Microsoft Dynamics 365 non ha buon esito.

Aggiornare un nuovo record dell'entità utilizzando classi dell'identità con associazione anticipata e la classe OrganizationServiceContext

Microsoft Dynamics 365 registra le modifiche apportate agli oggetti che sono allegati al contesto del servizio di organizzazione. Per modificare un record dell'entità esistente, è necessario aggiungere innanzitutto l'oggetto al contesto. Per aggiungere un oggetto nel contesto, è innanzitutto necessario recuperare il record dell'entità da Microsoft Dynamics 365 e quindi aggiungere l'oggetto nel contesto utilizzando il metodo OrganizationServiceContext.Attach. Quando l'oggetto viene registrato dal contesto, è possibile aggiornare il record impostando gli attributi dell'entità.

Nell'esempio seguente viene illustrato come aggiornare un attributo dell'account utilizzando le classi con associazione anticipata.

Account.EMailAddress1 = “Contoso-WebMaster@contoso.com”;

Nell'esempio seguente viene illustrato come eliminare un valore di attributo.

Account.EMailAddress1 = null;

Sono disponibili due metodi parziali denominati OnPropertyChanging e OnPropertyChanged per ogni entità. Questi metodi sono chiamati nel setter della proprietà. È possibile estendere questi metodi utilizzando le classi parziali per inserire regole business personalizzate.

Eliminare un nuovo record dell'entità utilizzando classi dell'identità con associazione anticipata e la classe OrganizationServiceContext

Per eliminare un record dell'entità, il contesto del servizio di organizzazione deve registrare l'oggetto. Una volta che l'oggetto è nel contesto, è possibile utilizzare il metodo OrganizationServiceContext.DeleteObject per contrassegnare l'oggetto nel contesto per l'eliminazione. Si noti che il record dell'entità in Microsoft Dynamics 365 non verrà eliminato fino a che il metodo OrganizationServiceContext.SaveChanges non verrà chiamato.

Utilizzare le classi dell'identità con associazione anticipata usa senza un contesto di oggetto

È possibile utilizzare le classi dell'identità con associazione anticipata senza creare un oggetto di contesto del servizio di organizzazione se non si desidera creare l'oggetto di contesto. La classe OrganizationServiceProxy include un oggetto OrganizationServiceProxy. MetodoCreate utilizzabile per salvare il record dell'entità necessario per Microsoft Dynamics 365.

Nell'esempio seguente viene illustrato come utilizzare le classi entità con associazione anticipata senza creare un oggetto di contesto del servizio di organizzazione. Oggetto OrganizationServiceProxy. Il metodo Create restituisce l'ID GUID assegnato al record entità appena creato.

Contact contact = new Contact()
 {
   FirstName = "Charles",
   LastName = "Brown",
   Address1_Line1 = "123 Main St.",
   Address1_City = "Des Moines",
   Address1_StateOrProvince = "IA",
   Address1_PostalCode = "21254",
   Telephone1 = "123-234-5678" 
  };
 _contactId = _serviceProxy.Create(contact); 

Per aggiornare un record dell'entità in Microsoft Dynamics 365, recuperare i dati da aggiornare, apportare le modifiche necessarie e quindi utilizzare OrganizationServiceProxy. Metodo Update per l'esecuzione del commit delle modifiche in Microsoft Dynamics 365. Per recuperare i record dell'entità, utilizza OrganizationServiceProxy. Metodo Retrieve per il recupero di un singolo oggetto oppure OrganizationServiceProxy. Metodo RetrieveMultiple per recuperare più oggetti. Per eliminare un record dell'entità, utilizzare il metodo OrganizationServiceProxy. Metodo Delete.

Vedere anche

Utilizzare le classi di entità con associazione anticipata nel codice
Utilizzare classi di entità con associazione anticipata per aggiungere o aggiornare le associazioni tra i record correlati
Creare le classi di entità con associazione anticipata con lo strumento di generazione del codice (CrmSvcUtil.exe)
Esempio: creare, recuperare, aggiornare ed eliminare i record (associazione anticipata)

Microsoft Dynamics 365

© 2017 Microsoft. Tutti i diritti sono riservati. Copyright