2009-07-17 7 views
1

J'ai conçu certaines classes en utilisant le diagramme de classe Visual Studio. Maintenant, je voudrais persister ces données en utilisant ORM et peut-être d'autres mécanismes de persistance. Je me demande s'il existe un moyen de générer le SQL en fonction des propriétés de mes classes, car elles représentent assez bien la structure de base de données nécessaire. Cela me permettrait d'économiser beaucoup de typage SQL manuel, et me donner un bon début.Doit/peut-on générer un schéma de base de données de classes?

Je n'ai pas commencé avec le modèle de base de données parce que je veux que ma persistance soit découplée de la "couche de domaine" réelle (je ne sais pas si c'est le bon nom). Le mappeur ORM (LLBLGen) peut ensuite générer le code basé sur ce schéma, et il suffira de mapper les objets générés à mon interface de persistance.

Est-ce une bonne idée, ou suis-je sur la mauvaise voie ici?

J'ai trouvé un outil qui semble faire l'affaire (MindScape LightSpeed), mais malheureusement il n'est disponible que pour VS2008.

Répondre

1

C'est une mauvaise idée. La conception de classe et la conception de base de données ne sont pas la même chose.

Personnellement, je fais mon design au niveau conceptuel avec NORMA, un complément gratuit Visual Studio. Il va générer le schéma à partir du modèle conceptuel, et peut également générer des classes.

Les classes qu'il génère sont un peu lourdes à mon goût, mais il s'avère que la génération de code peut être personnalisée, si vous ne craignez pas XSLT. En raison de la nature de la modélisation des rôles d'objet, les contraintes que vous placez sur le modèle peuvent être utilisées pour déduire à la fois le schéma de la base de données et un modèle "classe".

+0

Je vais essayer NORMA, merci. –

1

Cela dépend. Si le projet est petit, et que vous avez un délai serré. Sûr. Cependant, le code généré est presque toujours moins facile à maintenir que le code écrit à la main. C'est la même chose pour la génération de schéma de base de données. Jetez un oeil à la portée de votre projet. Peut-être même générer la base de données, et voir si vous aimez à quoi il ressemble. Ensuite, décidez pour vous-même. Réévaluez pour votre prochain projet. Une taille ne convient pas à tous.

+0

Il s'agit en effet d'un petit projet, avec un schéma de base de données relativement plat. Une idée sur la façon de faire cela? (Je pourrais le faire moi-même en utilisant la réflexion, mais il n'y aurait pas de temps économisé;)) –

+0

Je l'ai fait à bon marché avec Sparx Enterprise Architect. Importez les classes, puis utilisez la commande Transform pour les transformer en DDL. Obtenez une version d'essai si c'est un hack unique. –

+0

J'utiliserais certainement un ORM de tiers pour essayer de créer ma propre solution. LLBLGen n'est pas un mauvais choix. Vous pouvez également utiliser NHibernate. –

4

De nombreux ORM peuvent générer un schéma de base de données à partir de classes de modèles de domaine. De plus, certains ORM sont spécialement conçus pour ce type de développement. C'est "Model First" ou "Code d'abord" concept, et certaines personnes pensent que c'est un avenir de développement d'applications de base de données, puisque LINQ remplace maintenant SQL. Par exemple, la prochaine version d'Entity Framework soutiendra pleinement ce concept. Je peux recommander d'essayer DataObjects.Net, il génère automatiquement et met à jour le schéma de base de données et prend en charge les requêtes LINQ.

+0

Merci pour votre clarification Alex, je vais vérifier sur do.net aussi! –