WCF SqlParameter序列化问题解决方案
博文 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序列化问题解决方案的更多相关文章
- JavaScriptSerializer中日期序列化问题解决方案
JavaScriptSerializer中日期序列化问题解决方案 直接进入主题: class Student { public int age { get; set; } public DateTim ...
- Hibernate类没有找到序列化器解决方案
Hibernate类没有找到序列化器解决方案 异常信息类似如下 No serializer found for class org.hibernate.proxy.pojo.javassist.Jav ...
- C# 序列化与反序列化之xml对属性或者字段的子类化的子对象进行序列化的解决方案
C# 序列化与反序列化之xml对属性或者字段的子类化的子对象进行序列化的解决方案 xml序列化涉及到XmlRoot,XmlInclude,XmlElement,XmlAttribute,XmlType ...
- C# 序列化与反序列化之DataContract与xml对子类进行序列化的解决方案
C# 序列化与反序列化之DataContract与xml对子类进行序列化的解决方案 1.DataContract继承对子类进行序列化的解决方案 第一种是在 [DataContract, KnownTy ...
- C# 序列化与反序列化之Binary与Soap无法对泛型List<T>进行序列化的解决方案
C# 序列化与反序列化之Binary与Soap无法对泛型List<T>进行序列化的解决方案 新建Console控制台项目项目,然后添加Team和Person 这2个类,如下: Team和P ...
- C#中使用WCF一些常见问题及解决方案
最近在学习WCF,在这过程当中我遇到了很多的问题,简单说说我遇到的问题已经可能有效的解决方案. 1.在C#中,同一个解决方案下无法引用别的项目,引用之后会有一个警告,查看属性找不到引用的路径,这种情况 ...
- Entity Framework在WCF中序列化的问题
问题描述 如果你在WCF中用Entity Framework来获取数据并返回实体对象,那么对下面的错误一定不陌生. 接收对 http://localhost:5115/ReService.svc 的 ...
- WCF发布错误及解决方案
一:在本机直接运行时出错 使用WCF写了一个小程序测试一下它的功能在运行时报错.“添加服务失败.服务元数据可能无法访问.请确保服务正在运行并且正在公开元数据.” 如下图所示: 查了下资料把它解决了,记 ...
- WCF中序列化(XML\JSON\Dt)
序列化 是将对象转换为容易传输的格式的过程.例如,可以序列化一个对象,然后使用 HTTP 通过 Internet 在客户端和服务器之间传输该对象.反之,反序列化根据流重新构造对象. 序列化描述了持久化 ...
随机推荐
- python对象的for迭代实现
第一种:__iter__ 实现__iter__的对象,是可迭代对象.__iter__方法可以直接封装一个迭代器,从而实现for循环 class A: def __init__(self): self. ...
- react整理一二(初入React世界)
react重要思想:组件化(按钮组件.对话框组件.日期组件等等).JSX语法 react把代码和正式渲染目标隔离开来,除了可以在浏览器渲染到DOM来开发网页,还能用于开发原生移动运用 1.专注视图层: ...
- 使用python访问网络上的数据
这两天看完了Course上面的: 使用 Python 访问网络数据 https://www.coursera.org/learn/python-network-data/ 写了一些作业,完成了一些作业 ...
- Tmux会话的使用
不想看废话的直接拖到下面看干货部分! 我们管理Linux服务器通常是通过ssh远程连接过去,如果在服务器上执行比较耗时的操作,比如下载安装软件.编译等等,如果需要数个小时来完成这些工作,但是又不得不关 ...
- 修复运行 tasklist 命令时提示 ERROR: Not found
最近碰到了一个脚本运行 tasklist 总是提示 ERROR: Not found,在这里找到了修复的方法 https://superuser.com/questions/1282867/windo ...
- 彻底搞懂CSS文本、空白换行问题
首先,我们来整理一下与换行有关的3个CSS属性: word-break 该属性决定文本内容超出容器时,浏览器是否自动插入换行符. 属性值: normal:默认换行规则——英文以词为单位换行,连续字符不 ...
- 致我们再也回不去的 Github ...
本文原文来自公众号 stormzhang,原作者自称“二流学校毕业.非科班出身.从 0 自学编程到现在的「段子张」”. 1.前言 相信大家都知道了,微软已确认要收购 GitHub 了,Github ...
- MySQL InnoDB 索引组织表 & 主键作用
InnoDB 索引组织表 一.索引组织表定义 在InnoDB存储引擎中,表都是根据主键顺序组织存放的,这种存储方式的表称为索引组织表(index organized table IOT). 在Inno ...
- Git的初步学习
前言 感谢! 承蒙关照~ Git的初步学习 为什么要用Git和Github呢?它们的出现是为了用于提交项目和存储项目的,是一种很方便的项目管理软件和网址地址. 接下来看看,一家公司的基本流程图: 集中 ...
- silverlight属性改变事件通知
工作中遇到silverlight本身没有提供的某些属性改变事件,但又需要在属性改变时得到通知,Google搬运stack overflow,原地址 /// Listen for change of t ...