WCF Data Services und Windows 8

Die WCF Dataservices sind aktuell in der Version 5.0 angekommen und damit auch kompatibel zu Entity Framework mit dem seit 4.1 neuen Typ dbcontext. Das bedeuted in Visual Studio 2012 und einem webprojekt kann ein EF Model direkt als Quelle für den WCF Dataservice verwendet werden.

Der VB.NET Code für den minimal Service sieht wie folgt aus.

Public Class WcfDataService1
    ' TODO: replace [[class name]] with your data class name
    Inherits DataService(Of NorthwindEntities)

    ' This method is called only once to initialize service-wide policies.
    Public Shared Sub InitializeService(ByVal config As DataServiceConfiguration)
        ' TODO: set rules to indicate which entity sets and service operations are visible, updatable, etc.
        ' Examples:
        config.SetEntitySetAccessRule("*", EntitySetRights.AllRead)
        config.SetServiceOperationAccessRule("*", ServiceOperationRights.All)
        config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V3
    End Sub

End Class
Damit lässt sich die Customers Tabelle in der Datenbank lesen und aktualisieren. Anders als beim RIA Service ist der Aufruf in der URL per REST direkt mit Customers (Case sensitiv) durchzuführen.

Die Proxy Generierung im Windows 8 Projekt ist dann sogar per Discover im Add Service Reference Dialog möglich.

image

Der VB.NET Code im Windows 8 WinRT ist nahezu ident zu RIA Services Nutzung.

 Dim svc As New ServiceReference2.NorthwindEntities(
New Uri("http://localhost.fiddler:19668/wcfdataservice1.svc")) Private Sub Button_Click_1(sender As Object, e As RoutedEventArgs) listview1.DisplayMemberPath = "Company_Name" svc.BeginExecute(Of ServiceReference2.Customers) _ (New Uri("Customers", UriKind.Relative), AddressOf fertig, svc) End Sub Public Async Sub fertig(ByVal result As IAsyncResult) Await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, Sub() listview1.ItemsSource = svc.EndExecute(Of ServiceReference2.Customers)(result).ToList End Sub) End Sub
Kommentare sind geschlossen