Je développe une application Web conçue pour interroger une table de base de données volumineuse en fonction de la sélection de critères par les utilisateurs. Dans certains cas, ils peuvent connaître et entrer la clé primaire, d'autres fois ils peuvent vouloir voir des enregistrements de statut 'abc' créés dans les 7 derniers jours, ou des enregistrements créés par 'fred smith' où la description contient le mot 'proposition'. Le point est, il pourrait facilement être 10 - 20 différentes variables qu'ils pourraient spécifier, basé sur ce qu'ils recherchent.ASP.NET 2.0 C# DAL Paramètres de variables multiples
Il m'est assez facile de construire l'instruction sql et d'appliquer dynamiquement les paramètres dans le code derrière la page Web (aspx.cs). Cette approche fonctionne bien. Cependant, j'ai lu sur l'utilisation d'un DAL BLL & (ou même juste un DAL) mais tous les exemples que j'ai vus ont été triviaux sans paramètres par exemple getCategories() ou un seul paramètre par exemple getProductByID (Donc, ce que je voudrais savoir sur comment mieux transmettre ma liste variable de nombreux paramètres à la BLL/DAL sans avoir une méthode avec (par exemple) 20 paramètres (cela est réalisable mais semble très lourd, en particulier si un nouveau paramètre de sélection est ajouté).
Les autres idées que j'ai pensé sont
a) Construire un seul paramètre de chaîne qui peut être décodé dans la méthode, par exemple:
chaîne params = « DateField = créé; FromDate = 2011-03- 01; Status = abc "
BLL.getRecords (params);
(Workable, mais terrible et sujette à erreurs)
b) utiliser une structure ou une classe en tant que paramètre, par exemple
params.Status = "abc";
params.createdByUser = 23;
(Y at-il un problème avec le DAL ayant accès à ce struct/classe? J'ai lu que le DAL ne doit pas partager toutes les références avec les classes qui l'appelle?
Merci pour toutes suggestions quant à la façon vous mettre en œuvre ce scénario.
Merci Stas - Il me semble que vous avez adopté l'approche de passer tous les 20 (ou autant de) paramètres au code qui appelle votre procédure stockée, en utilisant null pour chaque paramètre qui n'est pas nécessaire. C'est globalement similaire à la façon dont je construis dynamiquement le sql dans le code de plus haut niveau. Cependant, j'essaye d'accomplir ceci en passant un seul paramètre de sélection. – David