2009-09-11 15 views
0

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

どのように私はFKSに対処する必要があります

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

私は間違っていますか?私は何かアドバイスをいただければ幸いです。

答えて

2

私はクラスのために今FKのものに取り組んでおり、それを信じているかどうかは分かりません。かなり難しいです。あなたの親クラスに子クラスのリストが含まれている場合 - それは多く/何ですか?たぶん - あなたの子クラスに参照バックが含まれている場合。それは弱い仮定です(双方向性は良い設計ではありません)。

とにかく。

ARはDB初心者のためのものです。あなたの好きなようにあなたのDBを作成してから、ARテンプレートを実行してください。あなたのFKは賞賛されます。

+0

Hey Rob 私はちょうど提案したアプローチに従っていますが、何らかの理由でSubsonicが主キーを決定できません。ここに問題のリンクがあります。 http://stackoverflow.com/questions/1806953/subsonic-cant-decide-which-property-to-consider-the-key-foreign-key-issue ショーストッパーとなったのでアドバイスをお願いします私のために。 ありがとう AJ –

+0

このリンクは骨が折れているようです。私はあなたが "プライマリキーを見つけることができません"という意味を知りません - プライマリキー属性を試しましたか? –

関連する問題