2012-05-17 4 views
0

Je suis en train de concevoir une application ASP.NET Web Forms qui sera utilisée pour interroger la base de données de manière dynamique avec des valeurs et des filtres personnalisés.Demande dynamique de données - Meilleure approche

Par exemple:

  • Tirez 3 champs: SKU, description, prix, couleur.

  • La valeur de Description doit être ProductName + virgule + espace + Description.

  • La valeur du Prix doit être Prix + 10,00.

  • La valeur de couleur doit être rouge si le SKU = 123.

je dois stocker ces « règles » dans ma base de données SQL je peux interroger ma base de données ultérieurement sur la base de ces règles. Initialement, je pensais stocker la règle en tant que texte SQL comme "ProductName +", "+ Description", puis l'utiliser dans mon SQL dynamique.

Mais il y a quelques petites choses qui ont besoin ne fonctionnerait pas si je devais le faire:

  1. Différencier les noms de colonnes et le texte statique. (Je suppose que les guillemets simples prendraient en charge que)
  2. Différents types de données (quand concaténer disons)
  3. déclarations de cas
  4. Il y a des clauses où aussi.

J'ai besoin d'idées sur la façon de procéder - ma structure de base de données et comment interroger ces règles. J'utilise ASP.NET Web Forms, base de données SQL Server.

Merci pour toute aide.

Répondre

0

J'ai fini par créer une table avec Fields (FieldID, FieldName) et Values ​​(Value, ValueType, Datatype, FieldID). Donc, si j'avais besoin Description pour égaler ProductName + virgule + espace + Description, j'aurais un enregistrement dans Fields table avec FieldName = "Description" et un enregistrement de valeur pour ProductName, virgule + espace et Description. ProductName et Description auraient un ValueType de "Field" et "," (espace de virgule) aurait "Static". J'ai ensuite construit ma requête SQL avec des paramètres basés sur ces attributs.

0

Pour cette idée qui vient dans mon esprit est de définir une table de règles métier et de mettre des valeurs en elle comme: BR_PK             BR_CODE               BR_VALUE
                            SKU_Fields             P.SKU, P.Description, p.prix, P.Couleur                             Price_Val                   p.prix + 10


Que vous pouvez joindre les requêtes dynamiques pour obtenir ces données et joindre avec les données d'autres tables, mais vous devrez ke ep les alias mêmes que vous définissez dans la table des règles métier.

Je vais essayer de trouver une meilleure approche, mais c'est celle qui me vient immédiatement à l'esprit.

Questions connexes