質問

SubSonic 3 ActiveRecordを使用して、外部キーを持つ既存のデータベースからコードを生成しました。データベースを切り替えるときにデータベーススキーマが常に正しいことを確認するために、ActiveRecord.ttによって生成された各クラスにIDataProvider.MigrateToDatabase<MyClass>()を使用して、アプリの先頭に移行コードを配置しました。移行コードは外部キーを再生成しません。

FKの対処方法:

  • FKを完全に忘れ、コード内のカスケード削除を処理します。長所:Railsの方法では、ビジネスロジックはコード内に保持されます。短所:トランザクションを処理する必要があるため、コードははるかにいものになります。データベースを切り替える/クリアすると、データベースとActiveRecord間のスキーマラウンドトリップが不可能になります(ARコードを再生成/変更するために常に元のスキーマを保持する必要があります。また、同僚は私が怒っていると思うかもしれません。
  • 移行にステップを追加して、FKを手動で作成します。長所:スキーマは常に最新です。 ARコードは常に再生成可能です。短所:データベースの依存関係(小さな問題?)
  • 何らかの方法で、スキーマを適切に移行できるように、コードでFK関係を定義する方法を見つけます。

間違っていますか?アドバイスをお願いします。

役に立ちましたか?

解決

現在、クラス用にFKを扱っていますが、信じられないかもしれませんが、それはかなり難しいことです。親クラスに子クラスのリストが含まれている場合-多/多ですか?たぶん-子クラスに戻る参照が含まれている場合。これは弱い仮定です(双方向は良い設計ではありません)。

とにかく

ARはDBファーストのユーザー向けです-したがって、DBを好きなように作成してから、ARテンプレートを実行してください。あなたのFKは称賛されます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top