Customizing Generated Code
[ This document was written for WCF Services Version 1 Service Pack 2 and might not be up to date Please see Release Notes or Changelog for a list of changes since WCF RIA Services ]
This topic describes how to customize the code generated on a Open Ria Services client. In some cases for Open 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. Open 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 Open 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.
1
Imports OpenRiaServices.Client
2
Namespace Web
3
Partial Public Class EmployeeDomainContext
4
Inherits DomainContext
5
Private Sub OnCreated()
6
Me.Load(Me.GetEmployeesQuery())
7
End Sub
8
End Class
9
End Namespace
Copied!
1
using OpenRiaServices.Client;
2
​
3
namespace RIAServiceExample.Web
4
{
5
public partial class EmployeeDomainContext : DomainContext
6
{
7
partial void OnCreated()
8
{
9
this.Load(this.GetEmployeesQuery());
10
}
11
}
12
}
Copied!
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.
1
Imports OpenRiaServices.Client
2
Namespace Web
3
Partial Public Class Employee
4
Inherits Entity
5
Private Sub OnCreated()
6
Me.CreatedBy = WebContext.Current.User.Name
7
End Sub
8
End Class
9
End Namespace
Copied!
1
using OpenRiaServices.Client;
2
​
3
namespace RIAServiceExample.Web
4
{
5
public partial class Employee : Entity
6
{
7
partial void OnCreated()
8
{
9
this.CreatedBy = WebContext.Current.User.Name;
10
}
11
}
12
}
Copied!

See Also

Tasks

Last modified 6mo ago