0

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

我的一个功能由此开始

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

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

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

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

让我收到错误“无法将类型 List < SqlClient.SqlParameter> 转换为 List < Service.SqlParameter>”

有没有办法在我不通过代码钓鱼并将 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;
}
4

1 回答 1

0

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

这是我使用的功能

private DataAccessService.DataAccessSqlParameter ConvertParam(SqlParameter param)
{
    DataAccessService.DataAccessSqlParameter daparam = new DataAccessService.DataAccessSqlParameter();
    daparam.ParameterName = param.ParameterName;
    daparam.ParameterValue = param.Value;
    return daparam;
}
于 2014-03-14T15:15:29.343 回答