J'ai créé une couche d'accès aux données librement inspirée de l'implémentation ActiveRecord du projet Castle. Pour qu'elle soit acceptée, elle doit prendre en charge la vaste bibliothèque de procédures stockées utilisées dans mon organisation, qui ont été écrites pour utiliser toutes les structures d'entrée/sortie imaginables, y compris les valeurs de retour et les paramètres de sortie de tous les types de données possibles.
Mon problème réside dans le développement du code qui ajoute le paramètre de sortie à la collection de paramètres de l'objet Command utilisé pour exécuter la procédure stockée. En ce moment, j'utilise simplement une grande valeur par défaut, en espérant qu'elle suffira à couvrir tous les cas, mais cela me semble négligé.
Comment puis-je connaître la longueur du paramètre de sortie à l'avance ?
Voici ma classe DAL, utilisant des attributs pour indiquer le paramètre de sortie :
[StoredProcedure("usp_PostARTransaction", OperationType.Insert)]
public class ARTranPost : DataObjectBase
{
[StoredProcedureParameter("sARTranID",OperationType.Insert,ParameterDirection.Output)]
public string ARTranID {get;set;}
[StoredProcedureParameter("sDueDate", OperationType.Insert, ParameterDirection.Input)]
public string DueDate { get; set; }
[StoredProcedureParameter("sPostDate", OperationType.Insert, ParameterDirection.Input)]
public string PostDate { get; set; }
}
Dois-je utiliser SMO ou une autre bibliothèque pour obtenir la longueur depuis la base de données?