J'ai besoin de passer des paramètres en tant que Xml à mes procédures stockées.
J'ai un service WCF au niveau intermédiaire qui fait des appels à ma couche de données qui, à son tour, transmet la requête à la procédure stockée appropriée.
La conception est que le service WCF est responsable de la construction du Xml à transmettre au référentiel.
Je me demande s'il faut garder le contrôle des paramètres contenus dans le Xml au niveau intermédiaire ou utiliser un dictionnaire construit par le client que je convertis ensuite en Xml au niveau intermédiaire.
Pour l'instant, j'ai opté pour cette dernière solution - par exemple :
public TestQueryResponseMessage TestQuery(TestQueryRequestMessage message)
{
var result = Repository.ExecuteQuery("TestQuery", ParamsToXml(message.Body.Params));
return new TestQueryResponseMessage
{
Body = new TestQueryResponse
{
TopicItems = result;
}
}
}
private string ParamsToXml(Dictionary<string, string> nvc)
{
//TODO: Refactor
StringBuilder sb = new StringBuilder();
sb.Append("<params>");
foreach (KeyValuePair<string, string> param in nvc)
{
sb.Append("<param>");
sb.Append("<" + param.Key + ">");
sb.Append(param.Value);
sb.Append("</" + param.Key + ">");
sb.Append("</param>");
}
sb.Append("</params>");
return sb.ToString();
}
Toutefois, il se peut que je doive procéder de la première manière. Par exemple
public TestQueryResponseMessage TestQuery(TestQueryRequestMessage message)
{
string xml = string.Format("<params><TestParameter>{0}</TestParameter></params>",message.Body.TestParameter)
var result = Repository.ExecuteQuery("TestQuery", xml);
return new TestQueryResponseMessage
{
Body = new TestQueryResponse
{
TopicItems = result;
}
}
}
Que recommande l'esprit de ruche ?