WCF RIA 增加删除数据时的注意事项(供非专业人士参考)

来源:互联网 时间:1970-01-01

前几天我开发中遇到一些困难,曾经发帖求助

http://bbs.silverlightchina.net/forum.php?mod=viewthread&tid=8205&extra=page%3D2

不过最终我通过自己摸索解决了问题,本来我想这是我个人遇到的特例,但我看回帖时发现有些网友也遇到类似问题。应一些网友的要求特此写点心得,避免一些和我一样的新手浪费时间。如何插入,修改,删除数据以及如何更新datagrid。

注意事项:

1. 数据库中的表一定要有主键。因为我不是专业人事,我一直没认为主键是个必须的东西,所以我的个别数据表因为想偷懒而没有设置主键,尤其在我设置了自增值字段如***id以后。但是如果在这种情况下你执行SubmitChanges()程序会处于停滞状态,也不报错。我实验了半天,终于想起了生成ado实体数据时vs2010给我的警告,如果没有主键只能生成只读的表。

2.还是数据库问题。本地测试的项目请不要使用windows用户连接你的数据库资源,最好使用sa用户连接。如果使用了请注意修改web.config。否则发布到本地的iis上会有问题。

3.增加新数据最简单

DomainService2 myds2 = new DomainService2();void OKButton_Click(object sender, RoutedEventArgs e)
{
//需要更新的数据
eeuser _eeuser=new _eeuser();
_eeuser.username="zhangsan“;
_eeuser.realname="张三";
_eeuser.updatedata=System.DateTime.Now;
myds2.eeusers..add(_eeuser);
myds2.SubmitChanges();
}

.修改或者删除是我当时碰到的主要问题,这两种方法都需要先

LoadOperation lolo = myds.Load(myds.GetEeuserQuery());

lolo.Completed += new EventHandler(lolo_Completed);

然后在lolo_Completed中处理你的修改或者删除工作。

修改

lolo.username="wangwu“;

lolo.realname="王五";

myds2.SubmitChanges();

删除

myds2.eeusers.remove(lolo);

myds2.SubmitChanges();

5.datagrid的更新。上面讲的GUID如果没有问题了,那么对新手来说还将面临一个常见问题,那就是数据库修改了而对应的一些数据显示控件没有更新。我的更新方法是这样的,好不好还需要高手指导一下。

我将上面所有的

myds2.SubmitChanges();
改成了

myds.SubmitChanges(SubmitOperation =>
                    {
                        refreshdatagrid();
                    }, null);
在refreshdatagrid();

中首先设置DataGrid.ItemsSource = null;后从新设置DataGrid.ItemsSource =你的数据表。

问题解决了,但这么解决是不是好,还有没有更好的方法我也没把握,如果有高手愿意做点指导我将感觉不尽。


相关阅读:
Top