Domanda

Sto iniziando un progetto in ASP.Net MVC con LINQ to Entities e mi chiedevo se ci fosse un modo piacevole, pulito di definire modelli che crea le tabelle appropriate nel database per me. Sono più familiarità con Django (in termini di framework MVC) e sto cercando l'equivalente di .Net models.py in modo da poter avere tutto sotto controllo di versione. Qualche idea? Sarebbe ancora meglio se avesse una qualche forma di migrazione dello schema, alla django-evoluzione e simili.

È stato utile?

Soluzione

Credo che ciò che si vuole fare è quello di girare intorno alla questione. Le entità possono essere generate automaticamente dal database, in modo che il problema è semplicemente utilizzando un meccanismo di .NET per mantenere lo schema del database. Dal momento che non si sta usando NHibernate, che queste altre soluzioni richiedono, vi suggerirei di usare MigratorDotNet . MigratorDotNet utilizza esattamente la stessa idea come Ruby on Rails migrazioni:

  1. Il database tiene traccia della sua versione
  2. Ogni volta che si desidera modificare lo schema, si scrive una piccola classe per gestire l'aggiornamento (e, opzionalmente, downgrade)
  3. Assegna queste classi un ordine di esecuzione
  4. Se il database è mai non è up-to-date, eseguire semplicemente metodi di aggiornamento delle classi al fine

Dal momento che sarete rigenerando soltanto i vostri Entità in fase di compilazione, io consiglierei di eseguire gli script di migrazione, e quindi rigenerare le vostre entità, come parte del processo di generazione. MigratorDotNet viene fornito già con un MSBuildTarget , aggiungendo sarà solo coinvolgere un paio di click .

Altri suggerimenti

Un'altra opzione è quella di utilizzare NHibernate con FluentNhibernate che mappa automaticamente il vostro modello basato su convenzioni. È anche possibile sostituire una mappatura di modificarlo per le vostre esigenze.

Castello Progetto record attivo è un bel modo di farlo.

Se le funzionalità offerte simili a Ruby on Rails record attivo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top