WCF Casting查询

时间:2013-11-04 21:12:43

标签: c# wcf

我第一次尝试WCF,我正在运行一个服务,我正在尝试在客户端程序上实现。客户端程序是我运行的另一个程序。

我的一个功能从这个

开始
public DataTable RunStoredProcWithDataTable(string storedprocname, List<System.Data.SqlClient.SqlParameter> paramlist)

在客户端程序中,我将WCF作为标记为“Service”的Web引用加载。如果我尝试在客户端程序中实现此函数,则该函数需要“Service.SqlParameter”,其中需要“System.Data.SqlClient.SqlParameter”。

我尝试通过强制转换将SqlClient.SqlParameter转换为Service.SqlParameter。

paramlist = (List<DataAccessService.SqlParameter>)paramlist;

获取错误“无法将类型List&lt; SqlClient.SqlParameter&gt;转换为List&lt; Service.SqlParameter&gt;”

如果没有我通过代码捕获并将SqlClisnt.SqlParameter更改为Service.SqlParameter,有没有办法转换?

这是服务合同

[ServiceContract]
[XmlSerializerFormat]
public interface ISqlAccess
{
 [OperationContract]
 DataTable RunStoredProcWithDataTableParameter(SqlAccess sql, string storedprocname, List<System.Data.SqlClient.SqlParameter> paramlist);
}

这是数据合同

[DataContract]
public class SqlAccess
{
    [DataMember]
    public string connectionname;
}

1 个答案:

答案 0 :(得分:0)

我通过创建一个刚刚将其从普通SqlParameter转换为新Sql参数的函数来解决这个问题。

这是我使用的功能

private DataAccessService.DataAccessSqlParameter ConvertParam(SqlParameter param)
{
    DataAccessService.DataAccessSqlParameter daparam = new DataAccessService.DataAccessSqlParameter();
    daparam.ParameterName = param.ParameterName;
    daparam.ParameterValue = param.Value;
    return daparam;
}