Share via


Personalizzazione del codice generato

In questo argomento viene descritto come personalizzare il codice generato su un client WCF RIA Services. In alcuni casi per RIA Services , è opportuno aggiungere al codice generato per il progetto client. Tuttavia, non è possibile personalizzare direttamente il codice generato perché le modifiche verrebbero sovrascritte la volta successiva che il codice di livello intermedio viene compilato. In vengono forniti metodi parziali nel codice generato che si possono implementare in un file di codice separato per personalizzare il codice del livello client. Questi metodi parziali sono "punti di hook" che si possono utilizzare per associare il codice al codice generato. I metodi vengono chiamati solo quando è stato creato un metodo parziale corrispondente.

Per informazioni sulla personalizzazione del codice generato per calcolare i nuovi valori sulla base delle proprietà della classe di entità, vedere Procedura: aggiungere proprietà calcolate nel client.

Metodi parziali

Il framework WCF RIA Services genera metodi parziali per le classi del contesto del dominio e le classi di entità.

Per le classi del contesto del dominio, viene fornito il seguente metodo parziale.

Membro Uso

OnCreated()

Eseguito quando viene creata un'istanza dell'oggetto DomainContext.

Per le classi di entità, vengono forniti i seguenti metodi parziali.

Membro Utente

OnCreated()

Eseguito quando viene creata un'istanza dell'oggetto entità.

OnLoaded(boolean)

Eseguito quando l'entità viene caricata e deserializzata per la prima volta o quando l'entità viene deserializzata dal server, ma già esiste nel client.

On[PropertyName]Changing

Chiamato dopo la convalida, ma prima che venga impostato il valore.

On[PropertyName]Changed

Chiamato subito dopo l'impostazione del valore e prima che il metodo RaiseDataMemberChanged venga chiamato.

On[CustomMethodName]Invoking

Chiamato quando viene chiamato il metodo personalizzato, ma prima che venga richiamato.

On[CustomMethodName]Invoked

Chiamato dopo che è stato chiamato e richiamato il metodo personalizzato.

Implementazione dei metodi parziali

Per utilizzare questi metodi, si aggiunge una classe parziale con lo stesso nome e lo stesso spazio dei nomi della classe generata da personalizzare. Poiché il codice client generato automaticamente dispone dello stesso spazio dei nomi del codice sul progetto server, lo spazio dei nomi per la classe parziale utilizzerà in genere il formato projectname.Web. Quindi, si implementa il metodo che viene eseguito quando il codice personalizzato deve essere eseguito. Ad esempio, per caricare un contesto del dominio quando viene creato, aggiungere il codice riportato di seguito.

Imports System.ServiceModel.DomainServices.Client
Namespace Web
  Partial Public Class EmployeeDomainContext
    Inherits DomainContext
    Private Sub OnCreated()
      Me.Load(Me.GetEmployeesQuery())
    End Sub
  End Class
End Namespace
using System.ServiceModel.DomainServices.Client;

namespace RIAServiceExample.Web
{
  public partial class EmployeeDomainContext : DomainContext
  {
    partial void OnCreated()
    {
      this.Load(this.GetEmployeesQuery());
    }
  }
}

È possibile impostare le proprietà sulla classe di entità generata in un metodo parziale. Ad esempio, se la tabella Employee nel database include un campo denominato CreatedBy, è possibile impostare il valore della proprietà implementando un metodo parziale per OnCreated(). Per tener traccia dell'autore della creazione di una nuova istanza di un'entità, aggiungere il codice riportato di seguito.

Imports System.ServiceModel.DomainServices.Client
Namespace Web
  Partial Public Class Employee
    Inherits Entity
    Private Sub OnCreated()
      Me.CreatedBy = WebContext.Current.User.Name
    End Sub
  End Class
End Namespace
using System.ServiceModel.DomainServices.Client;

namespace RIAServiceExample.Web
{
  public partial class Employee : Entity
  {
    partial void OnCreated()
    {
      this.CreatedBy = WebContext.Current.User.Name;
    }
  }
}

Vedere anche

Attività

Procedura: aggiungere proprietà calcolate nel client