Export (0) Print
Expand All

Customizing Generated Code

WCF RIA Services

[WCF RIA Services Version 1 Service Pack 2 is compatible with either .NET framework 4 or .NET Framework 4.5, and with either Silverlight 4 or Silverlight 5.]

This topic describes how to customize the code generated on a WCF RIA Services client. In some cases for RIA Services, you want to add to the code that is generated for your client project. However, you cannot directly customize the generated code because your changes will be overwritten the next time the middle tier code is compiled. RIA Services provides partial methods in the generated code that you can implement in a separate code file to customize the client tier code. These partial methods are "hook points" that you can use to attach your code to the generated code. The methods are called only when you have created a corresponding partial method.

For information about customizing the generated code to compute new values based on properties in the entity class, see How to: Add Computed Properties on the Client.

The WCF RIA Services framework generates partial methods for domain context classes and the entity classes.

For domain context classes, the following partial method is provided.

Member

Use

OnCreated()

Executed when the DomainContext object is instantiated.

For entity classes, the following partial methods are provided.

Member

User

OnCreated()

Executed when the entity object is instantiated.

OnLoaded(boolean)

Executed either when the entity is loaded and deserialized for the first time, or when the entity is deserialized from the server, but it already exists on the client.

On[PropertyName]Changing

Called after validation, but before the value is set.

On[PropertyName]Changed

Called just after value is set and before the RaiseDataMemberChanged method is called.

On[CustomMethodName]Invoking

Called when custom method is called, but before it is invoked.

On[CustomMethodName]Invoked

Called after custom method is called and invoked.

To use these methods, you add a partial class with the same name and namespace as the generated class you want to customize. Because the automatically-generated client code has the same namespace as the code on the server project, the namespace for your partial class will typically have the format projectname.Web. Then, you implement the method that is executed at the time when your custom code must be executed. For example, to load a domain context when it is created, you add the following code.

using System.ServiceModel.DomainServices.Client;

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

You can set properties on the generated entity class in a partial method. For example, if the Employee table in your database includes a field named CreatedBy, you can set the value of the property by implementing a partial method for OnCreated(). To track who created a new instance of an entity, you add the following code.

using System.ServiceModel.DomainServices.Client;

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