Parámetros de paso como Xml a un procedimiento almacenado

Tengo el requisito de pasar parámetros como Xml a mis procedimientos almacenados.

Tengo un servicio WCF en el nivel medio que realiza llamadas a mi capa de datos que a su vez reenvía la solicitud al procedimiento almacenado apropiado.

El diseño es que el servicio WCF es responsable de construir el Xml para pasarlo al Repositorio.

Me pregunto si mantener el control de qué parámetros están contenidos dentro del Xml en el nivel medio o usar un Diccionario creado por el cliente que luego convierto a Xml en el nivel medio.

En el momento en que me fui por este último, por ejemplo:

 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();
}

Sin embargo, es posible que deba hacerlo de la primera manera. P.ej

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;
          }
      }
}

¿Qué recomienda la colmena?

Respuestas a la pregunta(4)

Su respuesta a la pregunta