2009-11-11 4 views
0

Je prévois d'écrire un générateur de code pour générer l'interface utilisateur (formulaires, grilles, etc.). Comme j'utilise LINQ, je prévois de lire un fichier DBML à des fins d'extraction de métadonnées. Existe-t-il une API pour lire le modèle d'objet DBML (base de données, tables, colonnes et associations)? J'ai ouvert SQLMetal.exe avec Red Gate Software.NET Reflector. Il contient un espace de noms appelé LinqToSqlShared.DbmlObjectModel et il semble qu'il contienne tout ce dont j'ai besoin pour lire un modèle d'objet DBML. Les mauvaises nouvelles sont: cet espace de noms n'est pas exposé pour la consommation externe et toutes les classes sont déclarées comme "ami" (ou scellé).Comment lire un fichier DBML et le mapper dans un modèle objet dans .NET?

Une fois de plus, existe-t-il quelque chose, comme l'espace de noms LinqToSqlShared.DbmlObjectModel, pour lire DBML dans un modèle objet dans .NET? Ou dois-je l'écrire moi-même?

Répondre

1

Regardez comment le modèle est lu dans le projet L2ST4. Vous pouvez réutiliser le fichier T4.

+0

Excelent !, c'est exactement ce que je voulais faire. La classe Data fait le travail fantastique pour moi. Cependant l'implémentation dans un fichier .tt nécessite une interaction humaine, ce que je veux vraiment, c'est créer un outil en ligne de commande pour générer des classes et même des interfaces utilisateur de manière automatisée. Pour l'instant, j'ai isolé la classe [Data] dans une DLL pour travailler dans vb.net (qui est la langue que je connais;)) Je vais vous faire savoir comment ça se passe. Merci pour ce morceau de code fantastique. vous économisez plusieurs semaines de travail. Je vous dois une bière. –

0

Jetez un coup d'œil à un outil comme Reegenerator. Nous considérons cela comme un remplacement du générateur de code L2S, car nous avons des exigences de génération de code spécifiques.

+0

J'ai vu l'outil dont vous parlez, j'ai vu la vidéo et cela semble assez intéressant. Cependant, je vais utiliser des templates T4 pour la génération de code qui est assez facile à implémenter et à créer du code personnalisé. La seule chose dont j'ai besoin est d'extraire le modèle d'objet du fichier dbml. –

Questions connexes