Ich bin derzeit einige Forschung auf DBIx::Class, um meine aktuelle Anwendung von Class::DBI zu migrieren. Ehrlich gesagt bin ich ein bisschen enttäuscht über die DBIx::Class, wenn es um die Konfiguration der Ergebnisklassen kommt, mit Class::DBI konnte ich Metadaten auf Modelle nur durch den Aufruf der on-Funktion ohne Code-Generator und so weiter meine Frage ist ... kann ich das gleiche mit DBIX::Class auch scheint es, dass Client-seitige Trigger in DBIx::Class nicht unterstützt werden, oder ich bin nicht auf die falschen docs schauen?
Antwort
Zu viele Anzeigen?Auslöser können implementiert werden, indem die entsprechende Methode (new/create/update/delete usw.) in der Ergebnisklasse neu definiert und die übergeordnete Methode aufgerufen wird (über $self->next::method()
), entweder vor oder nach Ihrem Code. Zugegebenermaßen ist das etwas umständlich im Vergleich zu den Vorher/Nachher-Triggern in Class::DBI.
Was die Metadaten betrifft, so sprechen Sie von temporären Spalten für ein Objekt, d. h. von Daten, die nicht in der Datenbankzeile gespeichert werden. Diese können leicht mit einem der Class::Accessor::* Module auf CPAN hinzugefügt werden
Eine der schwierigsten Änderungen beim Wechsel von CDBI zu DBIC ist das Denken in ResultSets - oft wird das, was in CDBI über eine Class-Methode implementiert wurde, zu einer Methode auf einem ResultSet - und der Code muss möglicherweise erheblich umstrukturiert werden, es ist nicht immer eine einfache Konvertierung von einem zum anderen.