Compartir a través de


Personalizar el código generado

En este tema se describe cómo personalizar el código generado en un cliente de WCF RIA Services. Puede suceder que, en algunos casos de RIA Services , desee agregar código al código que se genera para su proyecto de cliente. Sin embargo, no puede personalizar directamente el código generado porque los cambios se sobrescribirán la próxima vez que se compile el código de nivel intermedio. proporciona métodos parciales en el código generado que puede implementar en un archivo de código independiente para personalizar el código de nivel de cliente. Estos métodos parciales son "puntos de enlace" que puede utilizar para adjuntar su código al código generado. Solo se llama a los métodos cuando se ha creado un método parcial correspondiente.

Para obtener información sobre cómo personalizar el código generado para calcular nuevos valores basados en propiedades en la clase de entidad, vea Agregar propiedades calculadas en el cliente.

Métodos parciales

El marco de WCF RIA Services genera métodos parciales para las clases de contexto de dominio y las clases de entidad.

Para las clases de contexto de dominio, se proporciona el siguiente método parcial.

Miembro Uso

OnCreated()

Se ejecuta cuando se crean instancias del objeto DomainContext.

Para las clases de entidad, se proporcionan los siguientes métodos parciales.

Miembro Uso

OnCreated()

Se ejecuta cuando se crean instancias del objeto entidad.

OnLoaded(boolean)

Se ejecuta cuando la entidad se carga y deserializa por primera vez o cuando la entidad se deserializa desde el servidor pero ya existe en el cliente.

On[PropertyName]Changing

Se le llama después de la validación pero antes de que se establezca el valor.

On[PropertyName]Changed

Se le llama justo después de establecerse el valor y antes de que se llame al método RaiseDataMemberChanged.

On[CustomMethodName]Invoking

Se le llama cuando se llama al método personalizado pero antes de invocarse.

On[CustomMethodName]Invoked

Se le llama cuando se llama al método personalizado pero después de invocarse.

Implementar los métodos parciales

Para utilizar estos métodos, debe agregar una clase parcial con el mismo nombre y el mismo espacio de nombres que la clase generada que desea personalizar. Dado que el código de cliente generado automáticamente tiene el mismo espacio de nombres que el código del proyecto de servidor, el espacio de nombres de la clase parcial tendrá normalmente el formato projectname.Web. A continuación, debe implementar el método que se ejecuta en el momento en que debe ejecutarse el código personalizado. Por ejemplo, para cargar un contexto de dominio cuando se crea, debe agregar el siguiente código.

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

Puede establecer propiedades en la clase de entidad generada en un método parcial. Por ejemplo, si la tabla Employee de la base de datos incluye un campo denominado CreatedBy, puede establecer el valor de la propiedad implementando un método parcial para OnCreated(). Para realizar un seguimiento de quién creó una nueva instancia de una entidad, debe agregar el siguiente código.

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

Vea también

Tareas

Agregar propiedades calculadas en el cliente