パラメータを Xml としてストアド プロシージャに渡す必要があります。
中間層に WCF サービスがあり、データ層を呼び出して、要求を適切なストアド プロシージャに転送します。
設計は、WCF サービスがリポジトリに渡す Xml の構築を担当することです。
中間層の Xml に含まれるパラメーターを制御するか、クライアントによって構築されたディクショナリを使用して中間層で Xml に変換するかを考えています。
現時点では、後者を選択しました-たとえば:
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();
}
ただし、最初の方法で行う必要がある場合があります。例えば
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;
}
}
}
ハイブマインドは何を勧めますか?