다음을 통해 공유


계산된 저장소 속성 및 사용자 지정 저장소 속성

모든 도메인 등록 정보는 도메인 관련 언어 (DSL) 다이어그램 및 언어 탐색기를 사용자에 게 표시 될 수 있습니다 및 프로그램 코드를 통해 액세스할 수 있습니다.그러나 속성 값이 저장 되는 방식에 다.

한 종류의 도메인 등록 정보

DSL 정의에 설정할 수 있는 종류 도메인 속성을 다음 표에 나열 된:

도메인 속성 종류

설명

표준 (기본값)

도메인 속성에 저장 되는 저장 및 파일로 serialize 된.

계산

읽기 전용 도메인 속성 저장소에 저장 되지 않습니다 하지만 다른 값에서 계산 됩니다.

예를 들어, Person.Age 에서 계산 될 수 있습니다 Person.BirthDate.

계산을 수행 하는 코드를 제공 해야 합니다.일반적으로 다른 도메인 속성에서 값을 계산합니다.그러나 외부 리소스를 사용할 수도 있습니다.

사용자 지정 저장소

도메인 속성을 저장소에 직접 저장 되지 않습니다 하지만 get 및 set을 둘 다 사용할 수 있습니다.

가져오기 및 값을 설정 하는 방법을 제공 해야 합니다.

For example, Person.FullAddress could be stored in Person.StreetAddress, Person.City, and Person.PostalCode.

가져오고 데이터베이스의 값을 설정 하는 예제에 대해 외부 리소스에 액세스할 수도 있습니다.

코드를 저장소에서 값을 설정 해야 하면 Store.InUndoRedoOrRollback 마찬가지입니다.참조 하십시오 트랜잭션 및 사용자 정의 Setter.

계산 또는 사용자 지정 저장 속성에 대 한 코드를 제공 하

계산 된 열 또는 사용자 정의 저장소에 종류의 도메인 속성을 설정 하면 액세스 방법을 제공 해야 합니다.솔루션을 빌드할 때 오류 보고 필요한 것 알려 줍니다.

계산 된 열 또는 사용자 정의 저장소 속성 정의 하기

  1. 다이어그램 또는 도메인 속성을 선택 하는 Dsldefinition.dsl에서 DSL 탐색기.

  2. 속성 창 설정의 종류 필드에 계산 또는 사용자 정의 저장소.

    또한 설정 해야 해당 형식 수행할 수 있습니다.

  3. 클릭 모든 템플릿 변환 의 도구 모음에서 솔루션 탐색기.

  4. 빌드 메뉴에서 솔루션 빌드를 클릭합니다.

    다음과 같은 오류 메시지가: "YourClass Get에 대 한 정의가 없습니다YourProperty합니다."

  5. 오류 메시지를 두 번 클릭 합니다.

    Dsl\GeneratedCode\DomainClasses.cs 또는 Domainrelationships.cs를 엽니다.위에서 강조 표시 된 메서드 호출을 주석 가져오기에 대 한 구현을 제공 하 라는 메시지가 나타납니다YourProperty().

    [!참고]

    이 파일은 Dsldefinition.dsl에서 생성 됩니다.이 파일을 편집 하는 경우 변경 내용을 클릭 하 여 때 손실 됩니다 모든 템플릿 변환.대신, 필요한 메서드는 별도 파일에 추가 합니다.

  6. 예를 들어 Customcode\는 별도 폴더에 클래스 파일을 열거나 만드는YourDomainClass. cs.

    네임 스페이스에서 생성 된 코드와 동일한 되어 있는지 확인 하십시오.

  7. 클래스 파일에는 도메인 클래스의 부분 구현을 작성 합니다.클래스에서 누락 된에 대 한 정의 쓸 가져오기 메서드는 다음 예제와 유사한:

    namespace Company.FamilyTree
    {  public partial class Person
       {  int GetAgeValue()
          { return System.DateTime.Today.Year - this.BirthYear; }
    }  }
    
  8. 설정 하면 종류사용자 정의 저장소를 제공 해야 합니다는 설정 메서드.예를 들면 다음과 같습니다.

          void SetAgeValue(int value)
          { if (!Store.InUndoRedoOrRollback)
              this.BirthYear = 
                  System.DateTime.Today.Year - value; }
    

    코드를 저장소에서 값을 설정 해야 하면 Store.InUndoRedoOrRollback 마찬가지입니다.참조 하십시오 트랜잭션 및 사용자 정의 Setter.

  9. 솔루션을 빌드하고 실행합니다.

  10. 이 속성을 테스트 합니다.사용자가 시도 했는지 확인 취소다시 실행.

트랜잭션 및 사용자 정의 Setter

메서드 내의 활성 트랜잭션이 일반적으로 호출 되기 때문에 사용자 지정 저장소 속성의 Set 메서드를 하면 트랜잭션을 열 수 없습니다.

그러나 사용자가 실행 취소 또는 다시 실행을 호출 하거나 트랜잭션이 롤백되는 경우 Set 메서드를 또한 호출 수 있습니다.때 InUndoRedoOrRollback true를 Set 메서드는 다음과 같이 작동 됩니다.

  • 이 다른 도메인 속성에 값을 할당 하는 등 저장소에 변경 해야 합니다.실행 취소 관리자는 해당 값을 설정 합니다.

  • 그러나 데이터베이스 또는 파일 내용, 또는 외부 저장소 개체와 같은 외부 리소스를 업데이트 합니다.이 synchronism에서 값의 저장소에서에 유지 하는 확인 합니다.

예를 들면 다음과 같습니다.

void SetAgeValue(int value)
{ 
  // If we are in Undo, no changes to Store objects:
  if (!this.Store.InUndoRedoOrRollback)
  { 
    this.BirthYear = System.DateTime.Today.Year - value; 
  }
  // But always update external objects:
  System.IO.File.WriteAllText(AgeFile, value);
}

트랜잭션에 대한 자세한 내용은 프로그램 코드에서 모델 탐색 및 업데이트을 참조하십시오.

참고 항목

참조

도메인 속성의 속성

개념

프로그램 코드에서 모델 탐색 및 업데이트

도메인별 언어 정의 방법