locked
WCF DataService を使った際の、再読み込みについて RRS feed

  • 質問

  • こんにちは。


    Silverlight 4 + WCF DataService という組み合わせで、Silverlight からサービスへのアクセス時の挙動について質問です。

    現象としては、サービスに対し再読み込みを行った場合、

    ・DB側で、Tableのカラム内容が変わっただけでは、Silverlight側のデータは更新されない。
    ・Tableの行数に変更があった場合は、Silverlight側のデータは変わる。

    カラムの値が変わっただけの時に、IE9の開発者ツールで応答内容をみると、サービスからは、対象のカラム内容が変更されたものが返されているようです。


    ここで、質問です。

    テストコード自体に問題があるのでしょうか?

    もしくは、再読み込み時に、データコンテキストを作成しなおす方法以外で、データを入れ替えるには、どのような方法があるでしょうか?


    よろしくお願いします。

     

    以下は、この確認に使用した、テストコードです。


    Imports F1SilverlightApplication.ServiceReference1
    Imports System.Data.Services.Client

    Partial Public Class MainPage
        Inherits UserControl

        Dim context As testdbEntities
        Dim svcURI As New Uri("WcfDataService1.svc", UriKind.Relative)
        Dim ds As DataServiceCollection(Of Table1)

        Public Sub New()
            InitializeComponent()
        End Sub

        Private Sub MainPage_Loaded(sender As Object, e As System.Windows.RoutedEventArgs) Handles Me.Loaded

            context = New testdbEntities(svcURI)
            ds = New DataServiceCollection(Of Table1)
            AddHandler ds.LoadCompleted, AddressOf ListData_svcDataLoadCompleted
            Dim query2 = From c In context.Table1s Select c
            ds.LoadAsync(query2)

        End Sub

        Private Sub ListData_svcDataLoadCompleted(ByVal sender As Object, ByVal e As LoadCompletedEventArgs)
            If e.Error IsNot Nothing Then
                MessageBox.Show(e.Error.Message)
                MessageBox.Show(e.Error.InnerException.Message)
                Return
            End If

            DataGrid1.DataContext = ds

        End Sub

        Private Sub Button1_Click(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles Button1.Click

            Dim query2 = From c In context.Table1s Select c
            ds.Clear()
            ds.LoadAsync(query2)

        End Sub
    End Class


    K.Oumi
    2011年8月4日 5:12

回答

すべての返信