SubSonic 3 ActiveRecordの移行は外部キーを無視します
-
05-07-2019 - |
質問
SubSonic 3 ActiveRecordを使用して、外部キーを持つ既存のデータベースからコードを生成しました。データベースを切り替えるときにデータベーススキーマが常に正しいことを確認するために、ActiveRecord.ttによって生成された各クラスにIDataProvider.MigrateToDatabase<MyClass>()
を使用して、アプリの先頭に移行コードを配置しました。移行コードは外部キーを再生成しません。
FKの対処方法:
- FKを完全に忘れ、コード内のカスケード削除を処理します。長所:Railsの方法では、ビジネスロジックはコード内に保持されます。短所:トランザクションを処理する必要があるため、コードははるかにいものになります。データベースを切り替える/クリアすると、データベースとActiveRecord間のスキーマラウンドトリップが不可能になります(ARコードを再生成/変更するために常に元のスキーマを保持する必要があります。また、同僚は私が怒っていると思うかもしれません。
- 移行にステップを追加して、FKを手動で作成します。長所:スキーマは常に最新です。 ARコードは常に再生成可能です。短所:データベースの依存関係(小さな問題?)
- 何らかの方法で、スキーマを適切に移行できるように、コードでFK関係を定義する方法を見つけます。
間違っていますか?アドバイスをお願いします。
解決
現在、クラス用にFKを扱っていますが、信じられないかもしれませんが、それはかなり難しいことです。親クラスに子クラスのリストが含まれている場合-多/多ですか?たぶん-子クラスに戻る参照が含まれている場合。これは弱い仮定です(双方向は良い設計ではありません)。
とにかく
ARはDBファーストのユーザー向けです-したがって、DBを好きなように作成してから、ARテンプレートを実行してください。あなたのFKは称賛されます。
所属していません StackOverflow