Passando parâmetros como XML para um procedimento armazenado
Eu tenho um requisito para passar parâmetros como Xml para meus procedimentos armazenado
Tenho um serviço WCF na camada intermediária que faz chamadas para minha camada de dados que, por sua vez, encaminha a solicitação para o procedimento armazenado apropriad
design é que o serviço WCF é responsável por criar o Xml para passar para o Repositóri
Estou pensando em manter o controle de quais parâmetros estão contidos no Xml na camada intermediária ou usar um Dicionário criado pelo cliente que, em seguida, converto em Xml na camada intermediári
No momento em que fui para o último - por exemplo:
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();
}
No entanto, talvez eu precise fazer da primeira maneira. Por exemplo
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;
}
}
}
O que o hivemind recomenda?