博文 http://www.cnblogs.com/pan11jing/archive/2011/08/19/2051827.html 通过自定义类,再在WCF端转换的方式解决问题,之后出现了一个很小的不便

先给出原博文代码:

首先是添加在WCF端的类:

    [Serializable]
[DataContract]
public class SerSqlParameter
{
public SerSqlParameter(SqlParameter sPara)
{
this.paraName = sPara.ParameterName;
this.paraLen = sPara.Size;
this.paraVal = sPara.Value;
this.sqlDbType = sPara.SqlDbType;
} public SqlParameter ToSqlParameter()
{
SqlParameter para = new SqlParameter(this.paraName, this.sqlDbType, this.paraLen);
para.Value = this.paraVal;
return para;
} [DataMember]
public string ParaName
{
get { return this.paraName; }
set { this.paraName = value; } }
private string paraName = ""; [DataMember]
public int ParaLen
{ get { return this.paraLen; }
set { this.paraLen = value; }
}
private int paraLen = ; [DataMember]
public object ParaVal
{
get { return this.paraVal; }
set { this.paraVal = value; }
}
private object paraVal = null; [DataMember]
public SqlDbType SqlDbType
{
get { return this.sqlDbType; } set { this.sqlDbType = value; }
}
private SqlDbType sqlDbType = SqlDbType.NVarChar;
}

然后在WCF方法中,使用:

public List<QueryResult_Marketing_DealerQuantity> ExecuteQueryMarketing_DealerQuantityBySql(string sql, string key, params SerSqlParameter[] sqlParameters)
{
SqlParameter[] p = new SqlParameter[sqlParameters.Length];
for (int i = ; i < sqlParameters.Length; i++)
{
p[i] = sqlParameters[i].ToSqlParameter();
}
return ExecuteQueryBySql<QueryResult_Marketing_DealerQuantity>(sql, key, p);
}

最后是客户端调用:

List<SerSqlParameter> sqlParameters = new List<SerSqlParameter>();

sqlParameters.Add(new SerSqlParameter(new SqlParameter { ParameterName = "@StartDateTime", SqlDbType = SqlDbType.DateTime, Value = model.StartDateTime }));

var resultList = _wcf.ExecuteQueryMarketing_DealerQuantityBySql(searchSql.ToString(), GlobalVariables.gs_safekey, sqlParameters.ToArray());

问题来了,因为我原来的代码是:

List<SqlParameter> sqlParameters = new List<SqlParameter>();

sqlParameters.Add(new SqlParameter { ParameterName = "@StartDateTime", SqlDbType = SqlDbType.DateTime, Value = model.StartDateTime });

var resultList = _wcf.ExecuteQueryMarketing_DealerQuantityBySql(searchSql.ToString(), GlobalVariables.gs_safekey, sqlParameters.ToArray());

对于每一个添加都需要添加

new SerSqlParameter()

这个工作量,也不是盖的,于是乎想起了这个方法:

/// <summary>
/// 附加追加方法
/// </summary>
/// <param name="sqlParameters"></param>
/// <param name="sqlParameter"></param>
public static void Add(this List<SerSqlParameter> sqlParameters, SqlParameter sqlParameter)
{
SerSqlParameter ser = new SerSqlParameter(sqlParameter);
sqlParameters.Add(ser);
}

这样之后,对于原代码,只需要改个类名就OK了!

WCF SqlParameter序列化问题解决方案的更多相关文章

  1. JavaScriptSerializer中日期序列化问题解决方案

    JavaScriptSerializer中日期序列化问题解决方案 直接进入主题: class Student { public int age { get; set; } public DateTim ...

  2. Hibernate类没有找到序列化器解决方案

    Hibernate类没有找到序列化器解决方案 异常信息类似如下 No serializer found for class org.hibernate.proxy.pojo.javassist.Jav ...

  3. C# 序列化与反序列化之xml对属性或者字段的子类化的子对象进行序列化的解决方案

    C# 序列化与反序列化之xml对属性或者字段的子类化的子对象进行序列化的解决方案 xml序列化涉及到XmlRoot,XmlInclude,XmlElement,XmlAttribute,XmlType ...

  4. C# 序列化与反序列化之DataContract与xml对子类进行序列化的解决方案

    C# 序列化与反序列化之DataContract与xml对子类进行序列化的解决方案 1.DataContract继承对子类进行序列化的解决方案 第一种是在 [DataContract, KnownTy ...

  5. C# 序列化与反序列化之Binary与Soap无法对泛型List<T>进行序列化的解决方案

    C# 序列化与反序列化之Binary与Soap无法对泛型List<T>进行序列化的解决方案 新建Console控制台项目项目,然后添加Team和Person 这2个类,如下: Team和P ...

  6. C#中使用WCF一些常见问题及解决方案

    最近在学习WCF,在这过程当中我遇到了很多的问题,简单说说我遇到的问题已经可能有效的解决方案. 1.在C#中,同一个解决方案下无法引用别的项目,引用之后会有一个警告,查看属性找不到引用的路径,这种情况 ...

  7. Entity Framework在WCF中序列化的问题

    问题描述 如果你在WCF中用Entity Framework来获取数据并返回实体对象,那么对下面的错误一定不陌生. 接收对 http://localhost:5115/ReService.svc 的 ...

  8. WCF发布错误及解决方案

    一:在本机直接运行时出错 使用WCF写了一个小程序测试一下它的功能在运行时报错.“添加服务失败.服务元数据可能无法访问.请确保服务正在运行并且正在公开元数据.” 如下图所示: 查了下资料把它解决了,记 ...

  9. WCF中序列化(XML\JSON\Dt)

    序列化 是将对象转换为容易传输的格式的过程.例如,可以序列化一个对象,然后使用 HTTP 通过 Internet 在客户端和服务器之间传输该对象.反之,反序列化根据流重新构造对象. 序列化描述了持久化 ...

随机推荐

  1. STM32学习笔记

    1.32位即表示32个二进制位(0/1)即32根线,每根线可以表示0/1两种状态,所以可以表示2^32=4GB的大小,CM3 采用了哈佛结构,拥有独立的指令总线和数据总线,可以让取指与数据访问并行不悖 ...

  2. shell中的常用条件判断

    -e :该“文件名”是否存在.exit-d :该文件名是否为目录.dir-f  :该文件名是否为普通文件.file -b:该文件是否为块文件.block -r :该文件是否具有可读属性 read-w ...

  3. 【笔记】css基于box的一行时垂直方向居中,多行平均居中,多出部分还省略号代替

    题目很长,其实他就是这样的: 看标题,一行的时候是这样的,在行中间 标题文字多的时候是这样的,变成2行,超出部分用省略号: 但是为了更好的兼容性,没有使用flex,使用的是box布局. 核心代码就是这 ...

  4. 一、Java和JavaScript

    JavaScript诞生于1995年,所以他得叫我一声姐姐,(*^__^*) .当时它的主要任务就是表单验证,在还没JavaScript的时候,进行表单验证的时候必须要把数据提交到服务器,才能进行表单 ...

  5. 【备忘】EntityFramework 6 升级到 EntityFrameworkCore 注意点

    正在将一个 .net framework 4.5 的项目升级到 .net core 2.1,其中使用到了 EF6,经历了一些修改: 命名空间的变化基本上可以靠自动提示补充完整,不需要强记. DbQue ...

  6. 吴恩达机器学习笔记34-模型选择和交叉验证集(Model Selection and Train_Validation_Test Sets)

    假设我们要在10 个不同次数的二项式模型之间进行选择: 显然越高次数的多项式模型越能够适应我们的训练数据集,但是适应训练数据集并不代表着能推广至一般情况,我们应该选择一个更能适应一般情况的模型.我们需 ...

  7. vue属性监听

    1.watch:用来监听每一个属性的变化 2.watch这个对象里面都是函数,函数的名称是data中的属性名称,watch中的函数不需要调用 3.当属性发生改变那么就会触发watch函数,每个函数都会 ...

  8. 使用 WRK 压力测试工具对 ASP.NET Core 的接口进行压力测试

    0. 简要介绍 WRK 是一款轻量且易用的 HTTP 压力测试工具,通过该工具我们可以方便地对我们所开发的 WebAPI 项目进行压力测试,并且针对测试的情况返回结果. PS:Wrk 并不能针对测试的 ...

  9. 【云服务器部署】---Linux下安装nginx

    [云服务器部署]---Linux下安装nginx 之前两篇,分别讲了:Linux下安装MySQL  和  springboot项目部署云服务器 nginx安装也是挺简单的.具体步骤如下: 第一步,下载 ...

  10. HP服务器设置iLO

    HP服务器设置iLO步凑 1.开机出现界面—按下F11进入Boot Menu: 2.选择Generic USB Boot回车: 3.选择System Configuration回车: 4.选择iLO ...