В данный момент я пишу небольшую программу преобразования, которая преобразует стратегию первичного ключа в использование GUID вместо целых чисел. Это простое требование клиента, и я не могу его изменить.
Я добавил заменяющий pk-кандидат в RAW (16) к каждой таблице в базе данных и заполнил каждую запись SYS_GUID ().
Я сделал то же самое для FK, я добавил столбец замены для каждого FK.
Сейчас я нахожусь в процессе связывания FK с их PK, выполняя запросы к родительской таблице, я получаю ключ guid / new для конкретной строки, после чего я хочу вставить замещающий кандидат FK в дочернюю таблицу.
Примерно так:
sqlString = "SELECT PK FROM " + t+ " WHERE " + fkcol+ " = " + childValue;
OracleDataReader guidReader = GetDataReader(sqlString);
while (guidReader.Read())
{
sqlString = "UPDATE T SET FK = " + guidReader["PK"];
}
Отладка этого sqlString возвращает мне следующее значение:
ОБНОВЛЕНИЕ SIS_T_USER SET FK_C_EMPLOYEE_ID
= System.Byte []
Теперь, как мне выйти и сохранить это как хороший гид в моей базе данных оракула?
РЕДАКТИРОВАТЬ как:
OracleCommand command = new OracleCommand(sqlString, this.oracleConnection);
command.CommandType = CommandType.Text;
OracleParameter op1 = new OracleParameter("guid", OracleDbType.Raw);
op1.Value = guidReader["PK"];
command.Parameters.Add(op1);
try
{
command.ExecuteNonQuery();
}
catch (OracleException oex)
{
Console.WriteLine("Unable to update: {0}", oex.Message);
}