社区
Web Services
帖子详情
WCF和DataSet
hotyei
2010-11-09 01:04:47
各位高手请指教:
定义了这样一个契约,返回一个数据集:
DataSet GetData(string SQLStr);
客户端也可以正常地接收对应的数据,但现在问题是客户端所作的修改,怎样提交到数据库上面??
...全文
383
11
打赏
收藏
WCF和DataSet
各位高手请指教: 定义了这样一个契约,返回一个数据集: DataSet GetData(string SQLStr); 客户端也可以正常地接收对应的数据,但现在问题是客户端所作的修改,怎样提交到数据库上面??
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
xiaobo
2010-12-23
打赏
举报
回复
DataSet.GetChanges()传递到服务端即可!
hotyei
2010-11-19
打赏
举报
回复
谢谢楼上。
lhzyn
2010-11-17
打赏
举报
回复
findcaiyzh所说的类型安全的意思是,已经定义好的有固定的属性或字段的类型,例如他定义的class Contact,
Dataset的不安全就在于,它存储的内容的属性是动态的,某个表可能有可能没有,表里面的字段也是不确定的.
使用Dataset作为DataContract一般都是不得已实在没办法时的选择.
对于这个:
这样的方法固然可行,但如果数据量非常大的情况下(如100000笔记录),如果我仅仅修改了一笔资料,这样会不会出现客户端重新将这100000笔资料重新回传到服务端的情况。如果真是这样,那么速度就会非常的慢。
你应该在程序里做好控制,保证提交的Dataset中都是需要更新的数据.
hotyei
2010-11-10
打赏
举报
回复
谢谢各位!
由于我们使用了用户自定义字段(客户自已向数据库添加一些字段),所以不能使用List<对象类别>的方式将数据传送到客户端,而必须使用DataSet的方式。
还望高手说一下使用DataSet有什么不好,类型安全又是指什么呢?
机器人
2010-11-10
打赏
举报
回复
[Quote=引用 3 楼 hotyei 的回复:]
上面两位高手,你们好!
通过:
void UpdateDatabase(DataSet _DataSetToUpdate);
这样的方法固然可行,但如果数据量非常大的情况下(如100000笔记录),如果我仅仅修改了一笔资料,这样会不会出现客户端重新将这100000笔资料重新回传到服务端的情况。如果真是这样,那么速度就会非常的慢。
[/Quote]
DataSet里只保存修改的一笔数据。。。
Devillyd
2010-11-10
打赏
举报
回复
[Quote=引用 4 楼 findcaiyzh 的回复:]
那就最好别用Dataset了,dataset不是类型安全的。
可以使用这样的
[DataContract(Namespace = "*****", Name = "Contact")]
class Contact
{
[DataMember(Order = 1)]
public int ContactId{get;set;};
[DataMember(Order ……
[/Quote]
顶
宝_爸
2010-11-10
打赏
举报
回复
那就最好别用Dataset了,dataset不是类型安全的。
可以使用这样的
[DataContract(Namespace = "*****", Name = "Contact")]
class Contact
{
[DataMember(Order = 1)]
public int ContactId{get;set;};
[DataMember(Order = 2)]
public string FirstName{get;set;};
[DataMember(Order = 3)]
public string LastName{get;set;};
[DataMember(Order = 4)]
public string Email{get;set;};
}
List<Contact> GetContacts(string SQLStr)
{
}
void UpdateContact(Contact newContact)
{
//根据Id更新数据库。
}
注意:以上代码没有经过编译,可能有些许错误。
潇洒王子
2010-11-10
打赏
举报
回复
直接根据ID修改记录,返回数据库即可,别搞的 太复杂
hotyei
2010-11-09
打赏
举报
回复
上面两位高手,你们好!
通过:
void UpdateDatabase(DataSet _DataSetToUpdate);
这样的方法固然可行,但如果数据量非常大的情况下(如100000笔记录),如果我仅仅修改了一笔资料,这样会不会出现客户端重新将这100000笔资料重新回传到服务端的情况。如果真是这样,那么速度就会非常的慢。
MarcuseXiao
2010-11-09
打赏
举报
回复
可序列化的类型(DataSet,或者自定义的DataContract)都可以作为参数进行调用的,跟类调用一样的
lhzyn
2010-11-09
打赏
举报
回复
客户端既然可以接收DataSet,当然也可以把修改后的DataSet提交到WCFService进行数据库更新啦.
你可以在契约中定义一个方法例如
void UpdateDatabase(DataSet _DataSetToUpdate);
另外
既然使用了WCF,最好不要定义这样的方法DataSet GetData(string SQLStr),把Sql语句传到WCFService执行还不如直连数据库来的直接.
使用
WCF
实现
DataSet
传输功能(后端)
接下来,我们可以根据需要处理获取到的
DataSet
对象,并使用客户端代理调用服务端的Send
DataSet
方法将
DataSet
对象发送到服务端。在服务端,我们创建了一个包含Get
DataSet
和Send
DataSet
方法的
WCF
服务,并在客户端应用程序中使用
WCF
客户端代理来调用这些方法。在上述代码中,我们实现了I
DataSet
TransferService接口,并提供了Get
DataSet
和Send
DataSet
方法的具体实现。首先,我们需要创建一个
WCF
服务来处理
DataSet
的传输。
DataSet
在
WCF
中怎么办?
DataSet
在
WCF
中怎么办? http://java.sun.com/webservices/reference/tutorials/wsit/doc/DataBinding.html Data Contracts This chapter describes guidelines for: Designing...
wcf
传输
Dataset
大数据量(转)
http://www.th7.cn/Program/net/201309/148486.shtml 由于
WCF
不能传输DataTable(不能序列化),所以更多项目中都会使用
DataSet
作为查询集合的首选返回类型,但是由于
DataSet
会生成很多的状态信息等,所以
DataSet
体积也会变大,有几种改变
DataSet
大小的方法。 1、将
DataSet
的RemotingFormat属性设置
WCF
传输
Dataset
大数据量 -压缩
由于
WCF
不能传输DataTable(不能序列化),所以更多项目中都会使用
DataSet
作为查询集合的首选返回类型,但是由于
DataSet
会生成很多的状态信息等,所以
DataSet
体积也会变大,有几种改变
DataSet
大小的方法。 1、将
DataSet
的RemotingFormat属性设置为Binary (默认是xml) <=> 2、使用开源的压缩组件“ICSharp...
WCF
+JSON vs WebService+
DataSet
性能实战对比
在分布式通信中,数据序列化方式直接影响系统吞吐量、内存占用与跨端兼容性。JSON作为轻量级文本协议,相比XML具有更低的标签冗余和更优的解析效率;而
DataSet
依赖XSD Schema的强类型XML序列化,在大数据量场景下易引发高内存消耗与CPU瓶颈。
WCF
通过契约驱动和可插拔序列化器(如Newtonsoft.Json)支持高效JSON传输,配合DTO模式可显著压缩载荷、提升TP99响应稳定性。该技术路径广泛适用于.NET存量系统升级、工业SCADA数据同步及移动端弱网环境下的API优化,是平衡开发效率与
Web Services
12,164
社区成员
16,322
社区内容
发帖
与我相关
我的任务
Web Services
.NET技术 Web Services
复制链接
扫一扫
分享
社区描述
.NET技术 Web Services
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章