Export (0) Print
Expand All
This topic has not yet been rated - Rate this topic

Customizing Generated Code

[This topic is pre-release documentation and is subject to change in future releases. Blank topics are included as placeholders.]

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.

Partial Methods

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.

Implementing the Partial Methods

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

See Also

Did you find this helpful?
(1500 characters remaining)
Thank you for your feedback
Show:
© 2014 Microsoft. All rights reserved.