SubSonic 3 ActiveRecord при миграции игнорирует внешние ключи - PullRequest
0 голосов
/ 11 сентября 2009

Используя SubSonic 3 ActiveRecord, я сгенерировал код из существующей базы данных с внешними ключами. Чтобы схема базы данных всегда была правильной при переключении баз данных, я поместил код миграции в начало приложения, используя IDataProvider.MigrateToDatabase<<i>MyClass</i>>() для каждого класса, сгенерированного ActiveRecord.tt. Оказывается, код миграции не восстанавливает внешние ключи.

Как мне поступить с ФК:

  • Забудьте все FK и обработайте каскадные удаления в коде. Плюсы: кстати, в Rails бизнес-логика хранится в коде. Минусы: нужно обрабатывать транзакции, код становится намного уродливее; обход схемы между базой данных и ActiveRecord становится невозможным, если база данных переключена / очищена (необходимо всегда сохранять исходную схему для регенерации / изменения кода AR, в противном случае сгенерированные свойства «один ко многим» будут потеряны?); Кроме того, мои коллеги могут подумать, что я сумасшедший.
  • Добавить шаг в миграцию для создания FK вручную. Плюсы: схема всегда будет актуальной; Код AR всегда можно будет восстановить. Минусы: зависимость от базы данных (незначительная проблема?)
  • Каким-то образом найдите способ определить отношения FK в коде, чтобы схема могла быть правильно перенесена.

Я делаю это неправильно? Буду признателен за любой совет.

1 Ответ

2 голосов
/ 11 сентября 2009

Я сейчас работаю над вещами ФК для классов, и верьте, хотите нет - это довольно сложно. Если ваш родительский класс содержит список дочерних классов - это много / много? Возможно - если ваш дочерний класс содержит ссылку назад. Это слабое предположение (двунаправленный не очень хороший дизайн).

Во всяком случае.

AR больше предназначен для людей, начинающих с БД, поэтому создавайте свою БД по своему усмотрению, а затем запускайте шаблоны AR. Ваши ФК будут удостоены чести и т. Д.

...