Frage

Mit SubSonic 3 Active, ich generierte Code aus einer bestehenden Datenbank, den Fremdschlüssel hatte. Datenbank-Schema, um sicherzustellen, immer korrekt ist, wenn Datenbanken wechselt, legte ich Migration Code am Anfang der App, für jede Klasse mit IDataProvider.MigrateToDatabase<MyClass>() von ActiveRecord.tt erzeugt. Es stellte sich heraus, ist die Migration Code keine Fremdschlüssel regenerieren.

Wie soll ich behandeln FKs:

  • Forget FKs ganz und kaskadierte Löschungen im Code zu behandeln. Vorteile: Die Rails Art und Weise, Business-Logik im Code gehalten. Nachteile: Notwendigkeit Transaktionen zu handhaben, Code wird viel hässlicher; Schema gehört: zwischen Datenbank und Active wird unmöglich, wenn die Datenbank eingeschaltet / gelöscht (müssen immer das ursprüngliche Schema halten zu regenerieren / AR-Code zu ändern, sonst erzeugt eine Eins-zu-viele Eigenschaften verloren gehen?); auch meine Kollegen mögen denken, ich bin verrückt.
  • einen Schritt zu Migrationen hinzufügen FKs manuell zu erstellen. Pro: Schema wird immer auf dem neuesten Stand; AR-Code wird immer möglich sein, sich zu regenerieren. Nachteile: (? Kleine Ausgabe) Datenbank Abhängigkeit
  • irgendwie einen Weg findet FK Beziehungen im Code zu definieren, so dass Schema ordnungsgemäß migriert werden.

Bin ich es falsch? Ich würde einen Rat zu schätzen wissen.

War es hilfreich?

Lösung

Ich arbeite an FK Sachen jetzt für Klassen und es glauben oder nicht - es ist ziemlich schwierig. Wenn Ihre Eltern-Klasse eine Liste eines Kindes Klasse enthält - ist es viele / viele? Vielleicht - wenn Ihr Kind Klasse enthält einen Verweis zurück. Das ist eine schwache Annahme (bi-direktional ist kein gutes Design).

Wie auch immer.

AR ist mehr für DB-first Menschen gemeint - so Ihre DB erstellen, wie Sie möchten, dann AR-Vorlagen laufen. Ihre FKs geehrt werden und so weiter.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top