Ich beginne gerade ein Projekt in ASP.Net MVC mit LINQ to Entities und ich frage mich, ob es eine schöne, saubere Möglichkeit zur Definition von Modellen, die die entsprechenden Tabellen in der Datenbank für erstellt mich. Ich bin am vertrautesten mit Django (in Bezug auf MVC-Frameworks) und bin auf der Suche nach dem .Net-Äquivalent von models.py
, so dass ich alles versioniert haben kann. Irgendwelche Ideen? Es wäre sogar besser, wenn es eine Form der Schemamigration, eine la Django-Evolution und dergleichen hätte.Erstellen von Modellen in ASP.NET MVC
Antwort
Ich denke, was Sie tun möchten, ist die Frage umdrehen. Entitäten können automatisch aus der Datenbank generiert werden. Das Problem besteht also darin, einen .NET-Mechanismus zu verwenden, um das Datenbankschema zu verwalten. Da Sie NHibernate nicht verwenden, was diese anderen Lösungen erfordern, würde ich vorschlagen, MigratorDotNet zu verwenden. MigratorDotNet verwendet genau die gleiche Idee wie Ruby on Rails-Migrationen:
- Ihre Datenbank verfolgt seine Version
- Jedes Mal, wenn Sie möchten, das Schema ändern, können Sie eine kleine Klasse schreiben das Upgrade zu behandeln (und optional , Herabstufung)
- Ordnen Sie diese Klassen eine Ausführungsreihenfolge
- Wenn die Datenbank überhaupt nicht up-to-date ist, einfach den Aktualisierungs-Methoden, um
Klassen ausführen Da Sie nur Regeneration werde Wenn Sie Ihre Entitäten zum Zeitpunkt der Kompilierung vorbereiten, sollten Sie die Migrationsskripts ausführen und dann Ihre Entitäten als Teil Ihres Buildprozesses neu generieren. MigratorDotNet kommt bereits mit an MSBuildTarget, und fügt nur ein paar Klicks hinzu.
Castle Project active record is a nice way of doing it.
Wenn Angebote Möglichkeiten, ähnlich wie auf Schienen aktiven Datensatz Rubin.
Eine weitere Option ist die Verwendung von NHibernate mit FluentNhibernate, die Ihr Modell automatisch anhand von Konventionen abbildet. Sie können ein Mapping auch überschreiben, um es an Ihre Bedürfnisse anzupassen.
Castle Project verwendet NHibernate, nicht LINQ zu Entities, nein? –
true, mein Schlechter, trotzdem ist es eine gute Alternative, wenn du migrationsähnliche Funktionalität willst – Konstantinos