2010-12-13 39 views
1

Je lis les contraintes de colonne à partir de la base de données.
par exemple:
Analyse de la contrainte de vérification SQL

(substring([name],(1),(1))='P' OR len([name])>(2) AND len([name])>(4) AMD (len(name)>5 OR len(name)<4)) 

L'idée est que chaque support ouvert doit être fermé.
Les parenthèses autour des nombres et autour des fonctions sont automatiquement insérées par le studio de gestion SQL lorsque nous ajoutons de nouvelles contraintes de vérification. Quelqu'un peut-il suggérer comment analyser ces chaînes?

Mon but est de convertir les contraintes de vérification de colonne en code C# afin que je puisse construire des validateurs d'entité. Toutes les tables de base de données sont mappées dans des classes Entities.

Répondre

2

Réponse simple: ce ne sera pas facile. Du moins pas si vous essayez de le faire correctement ...

Vous parlez de définir un DSL pour définir les contraintes (qui est "par coïncidence" exactement comme TSQL). À mon humble avis, vous devez utiliser une sorte d'outil d'analyse pour le faire. Peut-être que vous devriez envisager d'utiliser Irony.

C'est une idée intéressante cependant. J'en vois les avantages - je ne pense pas que ce soit plus simple que de simplement utiliser la base de données comme référentiel de données (sans aucune validation des données - peut-être seulement des contraintes de clés étrangères) et de se concentrer sur la définition de toutes les règles métier Côté serveur .NET ...