Какой самый быстрый способ преобразовать все столбцы GUID PK и FK и отношения в int? - PullRequest
3 голосов
/ 06 августа 2010

В настоящее время я занимаюсь разработкой приложения ASP.NET MVC с кучей связей PK-FK в базе данных. В начале разработки команда, с которой я работал, проголосовала против моей рекомендации использовать INT для всех ПК ... они решили использовать GUID.

Длинная история ... команда разделилась, и теперь у меня есть контроль, чтобы что-то изменить ... Я перешел с WebForms на MVC и хотел бы преобразовать все направляющие в Ints ... Уродливые URL-адреса, такие как "YUCK !! Плюс накладные расходы, связанные с индексированием руководств ... плюс, вероятно, это не поможет моей модели Linq to Entities.

Использование SQLServer 2008, ASP.NET MVC 2, Linq to Entities (Entity Framework)

Кто-нибудь знает быстрый способ конвертировать эти надоедливые направляющие в целые?

Ответы [ 2 ]

8 голосов
/ 06 августа 2010

Полагаю, вы также хотите, чтобы INT были IDENTITY. Вот как можно перенести данные:

  1. Переведите приложение в автономный режим, обновления БД невозможны, приостановите все задания агента SQL, импортируйте данные и т. Д.
  2. Для каждого ПК:
    • создать таблицу копирования с такой же структурой + 1 новый столбец int identity (1,1)
    • копировать данные из старой таблицы в новую таблицу
    • используйте sp_rename , чтобы поменять таблицы так, чтобы новая таблица стала старой таблицей
    • Промыть, циклически повторять для всех таблиц с PK (теперь таблицы имеют GUID и INT)
  3. Для каждого ФК:
    • добавить новый столбец INT в исходную таблицу FK (тот, который имеет ограничение)
    • запустить обновление, которое объединяет две таблицы идентификаторов GUID и назначает новые int PK для столбца отношения
  4. Добавить обратно FK-константы, теперь в столбцы INT
  5. Удалить GUID столбцы
3 голосов
/ 06 августа 2010
  1. Сценарий генерации всех первичных и внешних ключей
  2. Удаление всех первичных и внешних ключей
  3. Переименовать все столбцы GUID из SomethingID в SomethingGUID
  4. Создать новый int столбцы SomethingID
  5. воссоздание первичных ключей
  6. запись сценариев для обновления всех внешних ключей с использованием связей GUID
  7. воссоздание внешних ключей
  8. удаление столбцов GUID
...