Как я могу генерировать случайные величины в соответствии с типами данных? - PullRequest
0 голосов
/ 07 марта 2019

У меня есть несколько баз данных и таблиц.Я пытаюсь определить типы данных каждого столбца и создать случайные переменные в соответствии с типом данных?


Например:

col1 : int
col2 : nvarchar(max)
col3 : bit

Мне нужно определить каждый из типов данных вкод и создать случайные переменные для вставки.

Должен ли я создать методы, которые проверяют все типы данных и генерируют переменные, для этой работы?как:

if(datatype.Equals("int"))
   random.Next();
else if(datatype.Equals("string"))
   ...

Есть ли простой способ?


Ответы [ 3 ]

1 голос
/ 07 марта 2019

Вот подход:

var random = new Random();
var factory = new Dictionary<Type, Func<object>>()
{
    { typeof(int), () => random.Next() },
    { typeof(string), () =>
        {
            var bytes = new byte[16];
            random.NextBytes(bytes);
            return Convert.ToBase64String(bytes);
        }
    },
    { typeof(DateTime), () => DateTime.Now.AddDays((random.NextDouble() - 0.5) * 100) },
};

Тогда вы можете сделать это:

var datatype = typeof(string);
var output = factory[datatype]();
Console.WriteLine(output);

Я получаю eyqQ1EdMDTsR8Ny8kS73Hg== в качестве примера вывода.

Вам просто нужно собрать все нужные вам типы.

0 голосов
/ 07 марта 2019

Класс Random предоставляет методы Random.Next(), Random.NextBytes() и Random.NextDouble(). Метод Random.Next () возвращает случайное число, Random.NextBytes() возвращает массив байтов, заполненных случайными числами, а Random.NextDouble() возвращает случайное число в диапазоне от 0,0 до 1,0.

Метод Random.Next () имеет три перегруженные формы и позволяет установить минимальный и максимальный диапазон случайного числа.

Следующий код возвращает случайное число.

int num = random.Next();

Следующий код возвращает случайное число меньше 1000.

int num = random.Next(1000);

Следующий код возвращает случайное число между минимальным и максимальным диапазоном. Генерировать случайное число между двумя числами

public int RandomNumber(int min, int max)  
{  
    Random random = new Random();  
    return random.Next(min, max);  
}

Вы даже можете объединить два метода - RandomNumber и RandomString, чтобы создать комбинацию случайной строки и чисел.

// Generate a random string with a given size  
public string RandomString(int size, bool lowerCase)  
{  
    StringBuilder builder = new StringBuilder();  
    Random random = new Random();  
    char ch;  
    for (int i = 0; i < size; i++)  
    {  
        ch = Convert.ToChar(Convert.ToInt32(Math.Floor(26 * random.NextDouble() + 65)));  
        builder.Append(ch);  
    }  
    if (lowerCase)  
        return builder.ToString().ToLower();  
    return builder.ToString();  
}

Ссылка

Чтобы узнать соответствие, следуйте этому Ссылка

Используйте метод GetType(), чтобы узнать тип данных в C #. Вы можете узнать об этом Здесь

0 голосов
/ 07 марта 2019

Нет встроенной таблицы сопоставления «Тип данных SQL Server -> .NET data»;таким образом, вам придется выполнить сопоставление самостоятельно.

Вы можете проверить преобразования типа SQL Server в .Net

...