我第一次尝试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;
}
答案 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;
}