데이터 생성기 확장성 개요

Visual Studio Premium 또는 Visual Studio Ultimate을 사용하여 테스트에 사용할 의미 있는 데이터를 생성할 수 있습니다. 기본 제공 데이터 생성기를 사용하면 난수 데이터를 만들고, 기존 데이터 소스에서 데이터를 생성하고, 데이터를 생성하는 데 대한 다양한 측면을 제어할 수 있습니다. 기본 제공 생성기의 기능이 충분하지 않은 경우 사용자 지정 데이터 생성기를 만들 수 있습니다. 사용자 지정 데이터 생성기를 만들려면 Microsoft.Data.Schema.Tools.DataGenerator 네임스페이스의 클래스를 사용합니다.

데이터 생성기 확장성 API

확장성 API에서는 개발자가 상속할 수 있는 클래스를 제공합니다. 이러한 클래스 외에도 API에는 파생 클래스에 적용할 수 있는 특성이 포함되어 있습니다. 이러한 특성을 적용하여 일반적으로 사용자 지정 생성기에 필요한 코드 양을 줄일 수 있습니다.

다음과 같은 세 가지 방법으로 확장성 API를 사용하여 사용자 지정 데이터 생성기를 만들 수 있습니다.

확장성

설명

난이도

예제

선언 확장성

쉬움

기본 제공 Integer 데이터 생성기

일반 확장성

보통. 이는 대부분의 경우에 권장되는 방법입니다.

연습: 사용자 지정 데이터 생성기 만들기

연습: CHECK 제약 조건에 맞는 사용자 지정 데이터 생성기 만들기

기본 확장성

  • IGenerator 인터페이스를 구현하는 클래스를 만듭니다.

  • 생성기에 필요한 모든 메서드를 구현합니다.

  • 생성기에 대해 IDesigner를 구현하는 사용자 지정 디자이너를 만듭니다.

  • 디자이너에 필요한 모든 메서드를 구현합니다.

어려움

없음

기본 확장성

기본 확장성 API는 데이터 생성 엔진 및 데이터 생성 계획 디자이너가 상호 작용하는 메커니즘입니다. 이 API는 다음 목적에 적합하도록 디자인되었습니다.

  • 견고성 - 디자인 타임 및 런타임 엔진에서 일관성 있고 강력하게 구현할 수 있는 기능을 향상시킵니다.

  • 유연성 - 데이터 바인딩된 생성기와 같은 복잡한 생성기를 지원합니다.

기본 확장성 API와 관련된 디자인상의 단점은 상위 수준의 선언적 확장성 API보다 복잡하다는 것입니다.

사용자 지정 데이터 생성기 등록

사용자 지정 데이터 생성기를 사용하기 전에 컴퓨터에 생성기를 등록해야 합니다. 사용자 지정 데이터 생성기를 다른 사용자에게 제공하는 경우 해당 사용자의 컴퓨터에 생성기를 등록해야 합니다.

다음과 같은 방법으로 사용자 지정 데이터 생성기를 등록할 수 있습니다.

메서드

필요한 권한

예제

생성기를 Extensions 폴더에 등록

고급 사용자 이상

배포 프로젝트를 만들어 생성기 등록

관리자

  • 없음

데이터 생성기, 분포 및 디자이너

사용자 지정 데이터 생성기와 해당 생성기에 대한 사용자 지정 디자이너를 만들 수 있습니다. 또한 숫자 데이터 생성기에 대한 사용자 지정 분포와 해당 분포에 대한 사용자 지정 디자이너를 만들 수도 있습니다.

  • 사용자 지정 데이터 생성기에서는 사용자가 지정하는 규칙 집합에 따라 임의의 테스트 데이터를 생성합니다. 이러한 생성기에서 기본 디자이너를 사용할 수도 있고, DefaultGeneratorDesigner에서 상속하여 해당 생성기에 대한 사용자 지정 디자이너를 만들 수도 있습니다. 예를 들어 정규식 데이터 생성기는 기본 제공 데이터 생성기이지만 디자인 타임에 사용자 입력에 대한 사용자 지정 유효성 검사를 수행할 수 있도록 사용자 지정 디자이너를 사용합니다.

  • 사용자 지정 생성기 디자이너를 사용하면 사용자로부터 입력 및 출력 속성을 검색하는 방법을 사용자 지정하고, 기본값을 설정하고, 유효성 검사 동작을 지정할 수 있습니다.

  • 사용자 지정 분포를 사용하면 데이터 생성기에서 생성하는 숫자 값의 분포를 제어할 수 있습니다.

  • 사용자 지정 분포 디자이너는 사용자 지정 분포의 디자인 타임 동작을 제어합니다. 이 동작에는 분포의 입력 속성 이름 가져오기, 입력 속성의 기본값 설정, 분포의 입력 속성 값 유효성 검사가 포함됩니다.

데이터 생성기 및 지역화

Visual Studio는 여러 언어 버전으로 제공되므로 Visual Studio Premium 및 Visual Studio Ultimate에 포함된 생성기는 지역화되어 있습니다. 대부분의 경우에는 사용자 지정 생성기를 지역화할 필요가 없습니다. 지역화할 데이터 생성기를 만들어야 하는 경우 사용자 지정 디자이너를 만들어야 합니다. GetInputs 메서드를 재정의하여 입력 속성 이름을 지역화할 수도 있습니다.

참고

가능하면 IDesigner 인터페이스를 구현하지 말고 DefaultGeneratorDesigner 클래스에서 상속하여 불필요한 작업을 줄이는 것이 좋습니다.

데이터 생성기 인스턴스화

사용자 지정 데이터 생성기는 데이터를 공유할 수 있습니다. 공유 데이터 범위는 생성기 형식과 데이터베이스 테이블입니다. 모든 생성기 형식에는 각 데이터베이스 테이블에 대한 고유 인스턴스 사전이 있습니다. 예를 들어 Customers 테이블에 대한 사용자 지정 데이터 생성기는 공유 사전에 액세스할 수 있습니다. 원하는 모든 정보를 사전에 저장하여 공유할 수 있습니다. 사전은 각 생성기 형식과 테이블에 대해 동일한 인스턴스로 유지됩니다. 예를 들어 사용자 지정 데이터 생성기를 만들고 GeneratorInit에서 사전을 요청할 수 있습니다. 그런 다음 사전에 공유 정보가 있는지 여부를 확인할 수 있습니다. 공유 정보가 있으면 이 정보를 사용하여 데이터를 생성할 수 있습니다. 사용자 생성기의 다른 인스턴스에서 사용할 수 있는 공유 정보를 만들 수도 있습니다.

참고

생성기 인스턴스화는 고급 기술입니다. 생성기 인스턴스화를 통해 한 열이 다른 열보다 반드시 커야 하는 CHECK 제약 조건과 같이 여러 열에 대한 CHECK 제약 조건을 처리하는 사용자 지정 데이터 생성기를 만들 수 있습니다.

데이터 생성 과정

다음과 같은 단계에 따라 데이터가 생성됩니다.

디자이너 형식 결정

디자인 타임

이 단계에서는 데이터 생성기의 형식을 입력해야 합니다. 그러면 엔진에서는 GeneratorAttribute를 쿼리하여 디자이너 형식을 검색할 수 있습니다. 대부분의 경우 GeneratorAttribute는 기본 디자이너를 지정하는 기본 클래스에서 상속됩니다.

디자이너 인스턴스화 및 초기화

디자인 타임

디자이너가 인스턴스화됩니다. Initialize를 호출하고 생성기 형식을 인수로 전달하여 디자이너가 초기화됩니다.

입력 설명자 검색

디자인 타임

InputDescriptor는 디자이너에서 검색됩니다. 기본 디자이너에서는 데이터 생성기에서 InputAttribute로 표시된 모든 속성을 검색하여 이 작업을 수행합니다.

기본값 설정

디자인 타임

기본값이 설정됩니다.

생성기 출력 설명자 가져오기

디자인 타임

OutputDescriptor는 디자이너에서 검색됩니다. 기본 디자이너에서는 OutputAttribute로 표시된 속성을 사용하여 열 정보 창의 생성기 출력 열에 표시되는 설명을 만듭니다.

생성기 인스턴스화

런타임

데이터 생성기가 기본 생성자를 사용하여 인스턴스화됩니다.

생성기 입력 설정

런타임

디자이너에서 검색된 입력 설명자를 통해 데이터 생성기의 모든 입력 값이 설정됩니다.

생성기 유효성 검사

런타임

ValidateInputs 메서드가 호출됩니다. 유효성 검사에 실패하면 생성기에서 InputValidationException 예외를 throw합니다. 데이터 유효성 검사 예외 이외의 모든 예외는 복구할 수 없는 오류로 간주됩니다.

생성기 초기화

런타임

Initialize 메서드가 호출됩니다. 데이터 생성기에서는 이 단계를 통해 데이터가 생성되기 전에 대상 데이터베이스에 대한 연결 문자열 지정 또는 난수 생성기 시드 지정 등 필요한 모든 설정을 수행할 수 있습니다. 이 단계는 데이터가 생성되기 전에 한 번만 수행됩니다.

데이터 생성 실행

런타임

이 단계에서는 GenerateNextValues 메서드를 호출하여 새 결과가 생성됩니다. GetOutputValue 메서드를 사용하여 결과를 검색할 수 있습니다. 이 메서드는 입력으로 생성기에 전달된 출력 키에 해당하는 스칼라 값을 생성기에서 검색합니다. 원하는 결과가 모두 생성될 때까지 각 결과에서 이 단계가 반복됩니다.

정리

런타임

데이터가 모두 생성된 후 Dispose가 호출되어 생성기가 정리됩니다.

참고 항목

작업

방법: 사용자 지정 데이터 생성기 만들기

연습: 사용자 지정 데이터 생성기 만들기

참조

Microsoft.Data.Schema.DataGenerator

개념

사용자 지정 데이터 생성기를 통해 특수 테스트 데이터 생성