Le schéma de database SQL Server peut-il être généré à partir de classs .NET

J'ai un ancien code qui n'a pas utilisé la database. Le schéma de database peut-il être généré automatiquement à partir de classs existantes? Je sais que cela semble inversé que DB habituelle à la génération de class.

Mais ce serait bien s'il y a un moyen facile de le faire.

Bien sûr, avec un peu de reflection, vous pouvez générer des scripts de création de table rugueux, et même des procédures stockées pour supporter INSERTS / UPDATES / DELETS (si vous le souhaitez).

À less qu'il n'y ait un mappage un-à-un exact , vous devrez nettoyer ces scripts à la main.

EDIT: pour en savoir plus (en conjonction avec la réponse de @ TomTom)

Des choses qui seront difficiles / impossibles à déduire automatiquement:

  • valeurs de colonne par défaut
  • colonnes calculées (le cas échéant)
  • tailles de varchar
  • Colonnes NULL / NOT NULL
  • index

Choses que vous pourriez faire automatiquement avec beaucoup de travail (mais mieux à faire à la main, OMI):

  • affectation de key primaire
  • relations de key étrangère
  • des relations

Ce n'est pas. Ou, seulement d'une manière très stupide. Sans annotations supplémentaires, .NET contient beaucoup less d'informations qu'un schéma db. Conditions, vérifications arem issing. Les types de données sont également manquants. Et comment pensez-vous qu'un tel code déduirait quels indices avoir? Heck, même découvrir la key primaire d'une class / table n'est pas possible.

L'inheritance est un autre sujet.

Vous pouvez générer un schéma en tant que début, mais vous ne pouvez pas vraiment générer une database prête pour la production sans annoter fortement les classs.

Si vous utilisez VS2010, vous pouvez regarder le développement Code-First en utilisant Entity Framework, avec vos classs héritant de DbContext. ScottGu a une bonne input de blog ici sur comment faire cela.