Generator - класс
Представляет абстрактный базовый класс для генераторов данных.
Иерархия наследования
System.Object
Microsoft.Data.Schema.Tools.DataGenerator.Generator
Пространство имен: Microsoft.Data.Schema.Tools.DataGenerator
Сборка: Microsoft.Data.Schema.Tools (в Microsoft.Data.Schema.Tools.dll)
Синтаксис
'Декларация
<GeneratorAttribute(GetType(DefaultGeneratorDesigner))> _
<CLSCompliantAttribute(True)> _
Public MustInherit Class Generator _
Implements IGenerator, IDisposable, IExtensionInformation, IExtension
[GeneratorAttribute(typeof(DefaultGeneratorDesigner))]
[CLSCompliantAttribute(true)]
public abstract class Generator : IGenerator,
IDisposable, IExtensionInformation, IExtension
[GeneratorAttribute(typeof(DefaultGeneratorDesigner))]
[CLSCompliantAttribute(true)]
public ref class Generator abstract : IGenerator,
IDisposable, IExtensionInformation, IExtension
[<AbstractClass>]
[<GeneratorAttribute(typeof(DefaultGeneratorDesigner))>]
[<CLSCompliantAttribute(true)>]
type Generator =
class
interface IGenerator
interface IDisposable
interface IExtensionInformation
interface IExtension
end
public abstract class Generator implements IGenerator, IDisposable, IExtensionInformation, IExtension
Тип Generator предоставляет следующие члены.
Конструкторы
Имя | Описание | |
---|---|---|
Generator | Вызывается из конструкторов в унаследованных классах, чтобы инициализировать класс Generator. |
В начало страницы
Свойства
Имя | Описание | |
---|---|---|
Collation | Возвращает или задает для данного столбца параметры сортировки или сортировки для соответствующего языка. | |
Column | Получает или задает столбец. | |
ColumnName | Возвращает или задает имя столбца. | |
Constraints | Получает или задает сведения о проверочном ограничении для столбца. | |
DefaultLocaleId | Возвращает или задает код языка. | |
DefaultValue | Возвращает или задает значение столбца по умолчанию. | |
ExtensionHandle | Получает дескриптор расширения. | |
MaxLength | Получает или задает максимальную длину значений в этом столбце. | |
Nullable | Получает или задает значение, которое указывает, может ли столбец принимать значение nullпустая ссылка (Nothing в Visual Basic). | |
OutputKey | Возвращает или задает ключ, используемый для извлечения выходных значений. | |
PercentageNull | Получает или задает процент созданных для этого столбца значений, которые должны равняться nullпустая ссылка (Nothing в Visual Basic).Процент представляет собой целое число от 0 до 100. | |
Precision | Возвращает или задает точность данных. | |
RowsToInsert | Возвращает или задает число создаваемых строк. | |
Scale | Возвращает или задает масштаб данных. | |
SchemaName | Возвращает или задает имя схемы, к которой относится столбец. | |
Seed | Возвращает или задает начальное значение.Начальное значение может использоваться для инициализации детерминированного алгоритма создания случайных данных. | |
TableName | Возвращает или задает имя таблицы, к которой относится столбец. | |
TargetType | Получает или задает целевой тип данных столбца. | |
Unique | Получает или задает значение, указывающее, подпадает ли создаваемый столбец под ограничение на уникальность значений или ограничение для первичного ключа. |
В начало страницы
Методы
Имя | Описание | |
---|---|---|
Dispose() | Освобождает все ресурсы, используемые объектом Generator. | |
Dispose(Boolean) | Освобождает неуправляемые ресурсы, используемые объектом Generator, а также при необходимости освобождает управляемые ресурсы. | |
Equals | Определяет, равен ли заданный объект Object текущему объекту Object. (Унаследовано от Object.) | |
Finalize | Позволяет объекту попытаться освободить ресурсы и выполнить другие операции очистки, перед тем как объект будет утилизирован в процессе сборки мусора. (Унаследовано от Object.) | |
GenerateNextValues | Создает следующее значение в соответствии с алгоритмом генератора данных. | |
GetHashCode | Играет роль хэш-функции для определенного типа. (Унаследовано от Object.) | |
GetOutputValue | Извлекает выходное значение с помощью метода OutputKey. | |
GetType | Возвращает объект Type для текущего экземпляра. (Унаследовано от Object.) | |
Initialize | Инициализирует генератор данных. | |
MemberwiseClone | Создает неполную копию текущего объекта Object. (Унаследовано от Object.) | |
OnGenerateNextValues | Создает следующее значение в соответствии с алгоритмом генератора данных. | |
OnGetOutputValue | Извлекает текущий набор результирующих данных из одного или нескольких значений. | |
OnInitialize | Инициализирует генератор. | |
OnNextValues | Создает следующий набор значений для строки данных. | |
OnSetInputValues | Задает входные свойства генератора данных с помощью предоставленного списка именованных значений. | |
OnValidateInputs | Проверяет, что для генератора данных заданы все необходимые входные значения. | |
SetExtensionHandle | Задает дескриптор расширения с помощью заданного дескриптора расширения. | |
SetInputValues | Задает входные значения для генератора данных. | |
ToString | Возвращение строки, представляющей текущий объект. (Унаследовано от Object.) | |
ValidateInputs | Проверяет, что для генератора данных заданы все необходимые входные значения. |
В начало страницы
Заметки
Если стандартных генераторов данных недостаточно, можно создать настраиваемые генераторы данных. Чтобы создать настраиваемый генератор данных, необходимо создать класс, реализующий интерфейс IGenerator либо наследующий от класса Generator. Чтобы идентифицировать класс как генератор данных, оформите его атрибутом GeneratorAttribute.
Для настраиваемого генератора данных можно создать настраиваемый конструктор либо воспользоваться конструктором DefaultGeneratorDesigner.
Реализация базового класса создает выходные данные на основе общедоступных свойств, помеченных атрибутом OutputAttribute. Входные значения устанавливаются с помощью атрибута InputAttribute. Использование свойств, помеченных атрибутами, предоставляют простой механизм для объявления входных и выходных типобезопасных значений.
Примеры
Стандартные генераторы данных не позволяют создавать данные, удовлетворяющие некоторым проверочным ограничениям. Например, если проверочное ограничение требует, чтобы дата попадала в один из двух раздельных диапазонов, стандартный генератор DateTime использовать нельзя. В данном примере создается настраиваемый генератор данных, который удовлетворяет требованиям подобного ограничения. Генератор принимает в качестве входных данных два различных диапазона и создает случайную дату, которая попадает в один из двух диапазонов. Дополнительные сведения см. в разделе Пошаговое руководство. Создание пользовательского генератора данных для проверочного ограничения.
using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.VisualStudio.TeamSystem.Data.DataGenerator;
namespace GeneratorDateRangesCS
{
public class GeneratorDateRangesCS : Generator
{
DateTime mRange1Min;
DateTime mRange1Max;
DateTime mRange2Min;
DateTime mRange2Max;
[Input]
public DateTime Range1Min
{
set {mRange1Min = value;}
}
[Input]
public DateTime Range1Max
{
set {mRange1Max = value;}
}
[Input]
public DateTime Range2Min
{
set {mRange2Min = value;}
}
[Input]
public DateTime Range2Max
{
set {mRange2Max = value;}
}
DateTime mRandomDate;
[Output]
public DateTime RandomDate
{
get {return mRandomDate;}
}
Random mRandom;
Random mRandomRange;
protected override void OnInitialize(GeneratorInit initInfo)
{
// Deterministic
mRandom = new Random(this.Seed);
mRandomRange = new Random(this.Seed); //deterministic
// Non-deterministic
//mRandom = new Random();
//mRandomRange = new Random();
base.OnInitialize(initInfo);
}
protected override void OnGenerateNextValues()
{
DateTime min;
DateTime max;
// Generate a random date from either range 1 or range 2.
// Randomly select either range 1 or range 2 by randomly
// generating an odd or an even random number.
if (mRandomRange.Next() % 2 == 0) //check for odd or even
{
min = mRange1Min;
max = mRange1Max;
}
else
{
min = mRange2Min;
max = mRange2Max;
}
// The formula for creating a random number in a specific
// range is: of range + (size of range * random number
// between 0 and 1)
//size of range
TimeSpan range = max - min;
// (Size of range * random number between 0 and 1)
TimeSpan randomNumber = new TimeSpan(
(long)(range.Ticks * mRandom.NextDouble()));
// Start of range + (size of range * random number
// between 0 and 1)
mRandomDate = min + randomNumber;
}
} // End of class
} // End of namespace
Imports Microsoft.VisualStudio.TeamSystem.Data.DataGenerator
Public Class GeneratorDateRangesVB
Inherits Generator
Dim mRange1Min As Date
Dim mRange1Max As Date
Dim mRange2Min As Date
Dim mRange2Max As Date
<Input()> _
Public WriteOnly Property Range1Min() As Date
Set(ByVal value As Date)
mRange1Min = value
End Set
End Property
<Input()> _
Public WriteOnly Property Range1Max() As Date
Set(ByVal value As Date)
mRange1Max = value
End Set
End Property
<Input()> _
Public WriteOnly Property Range2Min() As Date
Set(ByVal value As Date)
mRange2Min = value
End Set
End Property
<Input()> _
Public WriteOnly Property Range2Max() As Date
Set(ByVal value As Date)
mRange2Max = value
End Set
End Property
Dim mRandomDate As Date
<Output()> _
Public ReadOnly Property RandomDate() As Date
Get
Return mRandomDate
End Get
End Property
Dim mRandom As Random
Dim mRandomRange As Random
Protected Overrides Sub OnInitialize(ByVal initInfo _
As GeneratorInit)
mRandom = New Random(Me.Seed) 'deterministic
mRandomRange = New Random(Me.Seed) 'deterministic
'mRandom = New Random() 'non-deterministic
'mRandomRange = New Random() 'non-deterministic
MyBase.OnInitialize(initInfo)
End Sub
Protected Overrides Sub OnGenerateNextValues()
Dim min As Date
Dim max As Date
' Generate a random date from either range 1 or range 2.
' Randomly select either range 1 or range 2 by randomly
' generating an odd or an even random number.
'------------------------------------------------------------
If mRandomRange.Next() Mod 2 = 0 Then 'check for odd or even
min = mRange1Min
max = mRange1Max
Else
min = mRange2Min
max = mRange2Max
End If
' The formula for creating a random number in a specific
' range is: of range + (size of range * random number
' between 0 and 1)
' Size of range
Dim range As TimeSpan = max - min
' (Size of range * random number between 0 and 1)
Dim randomNumber As TimeSpan = _
New TimeSpan(CLng(range.Ticks * mRandom.NextDouble()))
' Start of range + (size of range * random number
' between 0 and 1)
mRandomDate = min + randomNumber
End Sub
End Class
Потокобезопасность
Любые открытые члены этого типа, объявленные как static (Shared в Visual Basic), являются потокобезопасными. Потокобезопасность членов экземпляров не гарантируется.
См. также
Ссылки
Microsoft.Data.Schema.Tools.DataGenerator - пространство имен
Другие ресурсы
Пошаговое руководство. Создание пользовательского генератора данных для проверочного ограничения
Creating Custom Data Generators