none
wcf ria 检测数据库端改变, 头大死了,请各位帮忙 RRS feed

  • 问题

  • 有个问题,请各位兄弟指教。

    VS2010; Silverlight4; wcf ria 1.0

    现有一个.net程序在进行实时数据处理并将结果入库。

    另外有一个silverlight程序希望能用wcf ria连接到该数据库,在SIlverlight端用datagrid将上面那个程序的处理后写到数据库的结果实时显示出来。

     

    现在我用的是timer,定时运行 domaindatasource . load,

    问题是,当数据库的表有新加或删除表项时,可以顺利的实时显示出来;而当其中的现有某一条表项的某个列值发生变化时,却不能实时显示出来(好像此时客户端认为数据源没有变化)。此时若在timer里每次都先用domaindatasource . clear,  再用domaindatasource . load,就这可以刷出来 ,但这样在运行过程中整个表会有很明显的全空白状态,用户体验很差。

    我觉得关键可能是wcf ria客户端有没有办法准确判定数据源是否已经发生了变化。。。

    请问有什么办法解决吗。

     

    新东西不熟悉,头大死了,请各位帮忙。

    2010年7月20日 14:55

答案

  • 你好,

          WCF RIA ,在从服务器端Load数据时,会保留已经Load过的数据(这样可以节省很多的网络开销),也就是说假如你有3个Entity现在服务器新添加了一条Entity。

           这时候你去Load服务器端数据,原有3条不会被再次传送到客户端,因为RIA认为该数据已经load过了(通过Key来Identify Entity)。

           你可以改变LoadBehavior

           context.Load<Web.Employees>(context.GetEmployeesQuery(),LoadBehavior.xxxxx,false);

    2010年7月27日 7:39

全部回复

  • www.codeproject.com里有篇文章有详细介绍,不妨去看看。
    BLOG:http://beniao.cnblogs.com MSN:beniao@live.cn
    2010年7月21日 15:21
  • 可以考虑使用依赖缓存


    stay hungry stay foolish
    2010年7月22日 4:27
  • 你好,

          WCF RIA ,在从服务器端Load数据时,会保留已经Load过的数据(这样可以节省很多的网络开销),也就是说假如你有3个Entity现在服务器新添加了一条Entity。

           这时候你去Load服务器端数据,原有3条不会被再次传送到客户端,因为RIA认为该数据已经load过了(通过Key来Identify Entity)。

           你可以改变LoadBehavior

           context.Load<Web.Employees>(context.GetEmployeesQuery(),LoadBehavior.xxxxx,false);

    2010年7月27日 7:39