2009-05-11 5 views
8

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

6

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:

  1. Ihre Datenbank verfolgt seine Version
  2. Jedes Mal, wenn Sie möchten, das Schema ändern, können Sie eine kleine Klasse schreiben das Upgrade zu behandeln (und optional , Herabstufung)
  3. Ordnen Sie diese Klassen eine Ausführungsreihenfolge
  4. 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.

1

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.