社区
Web Services
帖子详情
WCF和DataSet
hotyei
2010-11-09 01:04:47
各位高手请指教:
定义了这样一个契约,返回一个数据集:
DataSet GetData(string SQLStr);
客户端也可以正常地接收对应的数据,但现在问题是客户端所作的修改,怎样提交到数据库上面??
...全文
318
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执行还不如直连数据库来的直接.
Silverlight
DataSet
需要下载:Silverlight.
DataSet
和Silverlight.
DataSet
Connector 下面是示例: DataTable Dt = new DataTable(); DataColumn col1 = new DataColumn("CompanyName"); Dt.Columns.Add(col1); DataColumn col2 = new DataColumn("Email"); Dt.Columns.Add(col2); DataRow Row = Dt.NewRow(); Row[0] = "杭州市公司"; Row[1] = "TEL110"; Dt.Rows.Add(Row); grid1.DataContext = Dt.GetBindableData(new Connector()); Silverlight与
Wcf
传递DataTable(以下均指我们下载这个程序集中的DataTable) 由于Silverlight这个程序集中使用的System.dll是C:\Program Files\Reference Assemblies\Microsoft\Framework\Silverlight\v3.0\System.dll(2.0.5.0版本)而不是.net framework中的那个System.dll(2.0.0.0.0版本),所以在
Wcf
中不能直接使用DataTable,那么如何将DataTable信息从
Wcf
传递到Silverlight中呢,就是
Wcf
将
DataSet
转成string或byte[]传递到Silverlight然后再将其还原成
DataSet
,看下面的代码示列:
Wcf
端: public string GetRecordset(string QuerySql) { DataTable Dt = DbAgent.GetRecordset(QuerySql);
DataSet
ds = new
DataSet
(); ds.Tables.Add(Dt); return Silverlight.
DataSet
Connector.Connector.ToXml(ds); } Silverlight端: void client_GetRecordsetCompleted(object sender, SilverlightApplication1.DbServer.GetRecordsetCompletedEventArgs e) { if (e.Error != null) { MessageBox.Show(e.Error.Message + e.Error.StackTrace); } else {
DataSet
ds = new
DataSet
(); ds.FromXml(e.Result); DataContext = ds.Tables[0].GetBindableData(new Connector()); } } 此DataTable中存入的数据不是object类型的,而全是string类型的,如果数据库中存的值为null,那么取出来的值是null而不是DbNull.Value.
WCF
分布式开发步步为赢.pdf
从网上整理的资料 1.
WCF
分布式框架基础概念 2.自定义托管宿主
WCF
解决方案开发配置过程详解 3.
WCF
服务元数据交换、配置及编程开发 4.
WCF
服务可靠性传输配置与编程开发 5.服务契约与操作重载 6.
WCF
服务契约继承与分解设计 7.
WCF
数据契约与序列化 8.使用数据集(
DataSet
)、数据表(DataTable)、集合(Collection)传递数据 9.
WCF
服务实例激活类型编程与开发 10.请求应答(Request-Reply) 、单向操作(One-Way)、回调操作(Call Back) 11.
WCF
流处理(Streaming)机制 12.
WCF
事务机制(Transaction)和分布式事务编程 13.
WCF
服务离线操作与消息队列MSMQ 14.
WCF
安全编程--基本概念 15.错误契约(FaultContract)与异常处理(ExceptionHandle)
Silverlight数据库
DataSet
文档教程
Silverlight数据库
DataSet
文档教程非
WCF
WebServer方法
Silverlight数据库
DataSet
Silver连接数据库(非
WCF
,WebServer方式)通过
DataSet
填充数据,方便程序移植。
流方式传输
dataset
wcf
开发以二进制字节流的方式传输
dataset
Web Services
12,162
社区成员
16,328
社区内容
发帖
与我相关
我的任务
Web Services
.NET技术 Web Services
复制链接
扫一扫
分享
社区描述
.NET技术 Web Services
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章