2009-07-01 12 views
2

Ich beginne ein ASP.NET MVC-Projekt mit SubSonic 3 ActiveRecord. Ich habe eine Tabelle Benutzer mit einer Primärschlüssel-ID und neu kompilierten T4-Dateien hinzugefügt, um die Benutzerklasse zu generieren.Definieren von SubSonic 3 ActiveRecord-Migrationen

Ich möchte sicherstellen, dass, während ich mit der Entwicklung gehe, ich die Datenbank jederzeit regenerieren/migrieren kann. Offenbar muss ich Tabellen und Beziehungen in der Datenbank erstellen, ActiveRecord-Klassen neu generieren und die Migration durchführen, wie in beschrieben. Die alte 2.x-Methode zum Definieren von Migrationen scheint nicht mehr verfügbar zu sein.

Gibt es eine Möglichkeit, die Entwicklung vom Code und nicht von der Datenbank zu steuern, indem Sie Modellklassen ändern und die Datenbank entsprechend migrieren, ohne SimpleRepository zu verwenden? Ich möchte generierten Code nicht in das Quellcode-Repository stellen, aber wenn nicht, verliere ich das Datenbankschema (es sei denn, ich exportiere und speichere es manuell).

Antwort

4

Sie können SubSonic 3 weiterhin als DAL verwenden und SubSonic 2.2 die Migrationen für Sie generieren lassen. Sie benötigen nur sonic.exe und ihre Abhängigkeiten, um die Migrationsdateien auszuführen.

Um genauer zu sein, habe ich Ordner Migrationen in meinem DataLayer-Projekt, das alle Migrationsdateien behält, aber die BuildAction auf keine setzt. Also habe ich Syntax Highlighting (aber keine Fehlerüberprüfung, außer ich setze BuildAction zurück zum Kompilieren), aber der Code macht mein Projekt nicht durcheinander.

Sie können sie natürlich in einem eigenen Projekt behalten. Aber ich mag es auf diese Weise, es unter Versionskontrolle zu haben und sicher zu sein, dass meine aktuelle DAL meiner Migrationsversion entspricht.

Außerdem habe ich meine Konfigurationsdatei migration.config benannt (anstelle von app.config/web.config) und verwende diese Befehlszeile, um meine Migrationen auszuführen.

Command:   /path/to/sonic.exe 
Arguments:   migrate /config migration.config 
Working Directory: $(SolutionDir)MyProject.Datalayer 

Beachten Sie den Schalter/Config, um die Konfigurationsdatei, die sonic.exe sucht, zu überschreiben.

0

Das Dokument verknüpft ist Zustand:

„Fazit: Wenn Sie ein Entwickler sind, die über Datenbank-Design betrifft, Migrationen vielleicht nicht für Sie“

Ich vermute, dass für das Detail von Design, das Sie wollen (und ich würde auch), die Migrationen sind möglicherweise nicht geeignet?

+0

, dass das Ding ist: Ich bin nicht besonders besorgt über Datenbank-Design und ich mag es eher von Code fahren als Migrationen von Hand zu schreiben, aber ich Bei der Verwendung von SubSonic Active Record ist dies kein einfacher Weg. – glebd