こんにちは。
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