다음을 통해 공유


생성된 코드 사용자 지정

이 항목에서는 WCF RIA Services 클라이언트에 생성된 코드를 사용자 지정하는 방법에 대해 설명합니다. RIA Services 에 대한 일부 경우에서는 클라이언트 프로젝트에 대해 생성되는 코드에 추가할 수 있습니다. 그러나 다음에 중간 계층 코드가 컴파일될 때 변경 내용을 덮어쓰므로 생성된 코드를 직접 사용자 지정할 수 없습니다. 에서는 클라이언트 계층 코드를 사용자 지정하기 위해 별도의 코드 파일에 구현할 수 있는 생성된 코드의 부분 메서드(Partial Method)를 제공합니다. 이러한 부분 메서드를 생성된 코드에 코드를 연결하는 데 사용할 수 있는 "후크 지점"입니다. 해당 부분 메서드를 만들었을 때만 메서드가 호출됩니다.

생성된 코드를 사용자 지정하여 엔터티 클래스의 속성을 기준으로 새 값을 계산하는 방법에 대한 자세한 내용은 방법: 클라이언트에서 계산된 속성 추가를 참조하십시오.

부분 메서드(Partial Method)

WCF RIA Services 프레임워크에서는 도메인 컨텍스트 클래스와 엔터티 클래스에 대한 부분 메서드(Partial Method)를 생성합니다.

도메인 컨텍스트 클래스에 대해 다음과 같은 부분 메서드(Partial Method)가 제공됩니다.

멤버 사용

OnCreated()

DomainContext 개체가 인스턴스화될 때 실행됩니다.

엔터티 클래스에 대해 다음 부분 메서드가 제공됩니다.

멤버 사용자

OnCreated()

엔터티 개체가 인스턴스화될 때 실행됩니다.

OnLoaded(boolean)

엔터티가 로드되어 처음 역직렬화될 때나 엔터티가 서버에서 역직렬화되지만 클라이언트에 이미 있을 때 실행됩니다.

On[PropertyName]Changing

유효성 검사 후 값이 설정되기 전에 호출됩니다.

On[PropertyName]Changed

값이 설정된 직후 RaiseDataMemberChanged 메서드가 호출되기 전에 호출됩니다.

On[CustomMethodName]Invoking

사용자 지정 메서드가 호출(call)될 때 호출(invoke)되기 전에 호출(call)됩니다.

On[CustomMethodName]Invoked

사용자 지정 메서드가 호출(call)되고 호출(invoke)된 후에 호출(call)됩니다.

부분 메서드(Partial Method) 구현

이러한 메서드를 사용하려면 사용자 지정하려는 생성된 클래스와 같은 이름 및 네임스페이스의 부분 메서드(Partial Method)를 추가합니다. 자동으로 생성된 클라이언트 코드의 네임스페이스는 서버 프로젝트의 코드와 같기 때문에 부분 메서드의 네임스페이스는 대개 projectname.Web 형식입니다. 그런 다음 사용자 지정 코드가 실행되어야 할 때 실행되는 메서드를 구현합니다. 예를 들어, 도메인 컨텍스트가 만들어질 때 해당 도메인 컨텍스트를 로드하려면 다음 코드를 추가합니다.

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

부분 메서드(Partial Method)의 생성된 엔터티 집합에 속성을 설정할 수 있습니다. 예를 들어, 데이터베이스의 Employee 테이블에 CreatedBy라는 필드가 있는 경우 OnCreated()에 대한 부분 메서드를 구현하여 속성 값을 설정할 수 있습니다. 엔터티의 새 인스턴스를 만든 사람을 추적하려면 다음 코드를 추가합니다.

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

참고 항목

작업

방법: 클라이언트에서 계산된 속성 추가