Erstellen von Modellen in ASP.NET MVC

8

Ich beginne gerade ein Projekt in ASP.Net MVC mit LINQ to Entities und ich frage mich, ob es eine schöne, saubere Art der Definition von Modellen gab, die für mich die entsprechenden Tabellen in der Datenbank erstellt. Ich bin am besten mit Django vertraut (in Bezug auf MVC-Frameworks) und suche nach dem .Net-Äquivalent von models.py , damit ich alles versionieren kann. Irgendwelche Ideen? Es wäre sogar besser, wenn es eine Form der Schemamigration, eine la Django-Evolution und dergleichen hätte.

    
tghw 11.05.2009, 17:48
quelle

3 Antworten

6

Ich denke, Sie wollen die Frage umdrehen. Entitäten können automatisch aus der Datenbank generiert werden. Das Problem besteht darin, einfach 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 ihre Version
  2. Jedes Mal, wenn Sie das Schema ändern möchten, schreiben Sie eine kleine Klasse, um das Upgrade (und optional das Downgrade) zu übernehmen
  3. Weisen Sie diesen Klassen eine Ausführungsreihenfolge zu
  4. Wenn die Datenbank immer nicht auf dem neuesten Stand ist, führen Sie einfach die Upgrade-Methoden der Klassen in der Reihenfolge
  5. aus

Da Sie Ihre Entitäten nur zur Kompilierzeit regenerieren werden, würde ich empfehlen, die Migrationsskripts auszuführen und dann Ihre Entitäten als Teil Ihres Build-Prozesses neu zu generieren. MigratorDotNet kommt bereits mit einem MSBuildTarget , das Hinzufügen erfordert nur ein paar Klicks.

    
Benjamin Pollack 13.05.2009, 14:42
quelle
1

Eine weitere Option ist die Verwendung von NHibernate mit FluentNhibernate , mit der Ihr Modell automatisch auf Konventionen basiert. Sie können ein Mapping auch überschreiben, um es an Ihre Bedürfnisse anzupassen.

    
Derek Ekins 11.05.2009 19:14
quelle
0

Castle Project active record ist eine gute Möglichkeit, dies zu tun.

Wenn bietet Fähigkeiten wie Ruby auf Schienen aktiv aufnehmen.

    
Konstantinos 11.05.2009 17:51
quelle