Freigeben über


Anpassen des generierten Codes

In diesem Thema wird beschrieben, wie der auf einem WCF RIA Services-Client generierte Code angepasst wird. Beim Arbeiten mit RIA Services kann es vorkommen, dass Sie den für das Clientprojekt generierten Code ergänzen möchten. Der generierte Code kann jedoch nicht direkt angepasst werden, da die Änderungen bei der nächsten Kompilierung der mittleren Ebene überschrieben werden. stellt partielle Methoden im generierten Code bereit, die Sie in einer separaten Codedatei implementieren können, um den Code auf der Clientebene anzupassen. Diese partiellen Methoden sind "Hookpunkte", mit denen Sie Ihren Code an den generierten Code anfügen können. Die Methoden werden nur aufgerufen, wenn Sie eine entsprechende partielle Methode erstellt haben.

Informationen zum Anpassen des generierten Codes, um neue Werte basierend auf Eigenschaften in der Entitätsklasse zu berechnen, finden Sie unter Gewusst wie: Hinzufügen von berechneten Eigenschaften auf dem Client.

Partielle Methoden

Das WCF RIA Services-Framework generiert partielle Methoden für Domänenkontextklassen und die Entitätsklassen.

Für Domänenkontextklassen ist die folgende partielle Methode verfügbar.

Member Verwendung

OnCreated()

Wird ausgeführt, wenn das DomainContext-Objekt instanziiert wird.

Für Entitätsklassen sind die folgenden partiellen Methoden verfügbar.

Member Verwendung

OnCreated()

Wird ausgeführt, wenn das Entitätsobjekt instanziiert wird.

OnLoaded(boolean)

Wird ausgeführt, wenn die Entität zum ersten Mal geladen und deserialisiert wird oder wenn die Entität vom Server deserialisiert wird, aber bereits auf dem Client vorhanden ist.

On[PropertyName]Changing

Wird nach der Validierung, jedoch vor dem Festlegen des Werts aufgerufen.

On[PropertyName]Changed

Wird unmittelbar nach dem Festlegen des Werts und vor dem Aufrufen der RaiseDataMemberChanged-Methode aufgerufen.

On[CustomMethodName]Invoking

Wird aufgerufen, wenn eine benutzerdefinierte Methode aufgerufen wird (jedoch vor deren Start).

On[CustomMethodName]Invoked

Wird nach dem Aufrufen und Starten einer benutzerdefinierten Methode aufgerufen.

Implementieren der partiellen Methoden

Zur Verwendung dieser Methoden fügen Sie eine partielle Klasse mit dem gleichen Namen und Namespace wie die anzupassende generierte Klasse hinzu. Da der automatisch generierte Clientcode über den gleichen Namespace verfügt wie der Code für das Serverprojekt, besitzt der Namespace für die partielle Klasse normalerweise das Format projectname.Web. Anschließend implementieren Sie die Methode, die ausgeführt wird, wenn der benutzerdefinierte Code ausgeführt werden muss. Der folgende Code kann z. B. hinzugefügt werden, um einen Domänenkontext bei seiner Erstellung zu laden.

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

Sie können in einer partiellen Methode Eigenschaften für die generierte Entitätsklasse festlegen. Wenn die Tabelle "Employee" in der Datenbank z. B. ein Feld mit dem Namen CreatedBy enthält, können Sie den Wert der Eigenschaft festlegen, indem Sie eine partielle Methode für OnCreated() implementieren. Fügen Sie den folgenden Code hinzu, um nachzuverfolgen, von wem eine neue Instanz einer Entität erstellt wurde.

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

Siehe auch

Aufgaben

Gewusst wie: Hinzufügen von berechneten Eigenschaften auf dem Client