Silverlight: Entity Data Modelle via ADO.NET Data Services in Silverlight konsumieren – Teil 1

Von Andreas Aschauer Autor Feed 24. August 2009 22:20

Um von einer Silverlight Applikation auf eine Server-Datenquelle, wie zum Beispiel eine relationale Datenbank zuzugreifen verwendet kann findet vielfach die WCF Verwendung. Dies bringt jedoch einigen Implementierungsaufwand mit sich. Für jede Entität müssen die CRUD Operationen als OperationContracts des Services implementiert werden. Abhilfe schaffen die ADO.NET Data Services. Sie ermöglichen einen REST basierten Zugriff via URL und vereinfachen den Aufwand dies zu implementieren ungemein.

REST steht für Representational State Transfer Die typischen CRUD Operationen werden bei REST den vier HTTP Verben zugeordnet.

  • Create-> POST
  • Read –> GET
  • Update –> PUT
  • Delete –> DELETE

Jede Resource wird über eine eigene URL angesprochen. Also zum Beisiel http://meinserver/Produkte  um eine Entität namens ‘Produkte’ abzurufen.

Besonders in Verbindung mit einem Entity Data Model des Microsoft Entity Frameworks, ist es sehr einfach Daten via ADO.NET Dataservices im REST Architekturstil für Clients verfügbar zu machen.

Als Beispielapplikation für diesen und die folgenden Artikel soll ein RSS Reader in Silverlight implementiert werden. Daraus ergeben sich folgende Hauptfunktionalitäten:

  • RSS Feeds abonnieren
  • Userverwaltung
  • Speichern der abonnierten Feeds und organisieren in Ordner
  • Ansprechende UI mit den Möglichkeiten die Silverlight 3 bietet (Hier hoffe ich auf Mario Meir- Huber und seine Special-Shader Effekte,etc :- ))

Voraussetzung für die Umsetzung ist die Installation der aktuellen CTP der ADO.NET Dataservices. Siehe ´Downloads’ am Ende des Posts.

Im ersten Schritt soll ein relationales Schema erstellt werden, dass die Abonnierten Feeds, die User und die Folder in denen die Feeds organisiert sind abbildet.

Dazu wird mit mit SQL Server Management Studio eine SQL Server Datenbank mit folgendem Schema erstellt.

SilverReaderDB

Die Datenbank ist absichtlich recht einfach gehalten. Die Userverwaltung funktioniert via ASP.NET Membership API (daher auch die in der Abbildung enthaltene Tabelle ‘aspnet_Users’ ) und Forms-Basierter Authentifizierung. Mittels des Hilfsprogramms aspnet_regsql.exe lässt sich das für die Membership API erforderliche Schema direkt in der selben Datenbank erzeugen. Informationen hierzu : Creating the Application Services Database for SQL Server

Danach in Visual Studio ein neues Silverlight Project erstellen und als ‘Host Web Project Type’ ASP.NET Web Application Project auswählen.

Silverlight Host Project Type

Nachdem aspnet_regsql.exe im vorigen Schritt die erforderlichen Tabellen und Stored Procedures in unserer Datenbank erstellt hat muss noch der ASP.net Membership Provider in der web.config Datei angepasst werden. Standardmässig ist der Membership Provider in der machine.config konfiguriert und verwendet als Datenbank eine Datei namens aspnetdb.mdf. Um den Provider zu konfigurieren, folgendem Artikel folgen:

Den ASP.NET Membership Provider konfigurieren

Und endlich können wir mit dem interessanten Teil loslegen!

Dem ASP.NET Web Application Project wird nun das Entity Data Model hinzugefügt. Einfach unter “Add new Item” ein neues ADO.NET Entity Data Model auswählen und dem Wizard folgen. Die Datenbank muss schon bestehen, da leider erst mit Version 4 des Entity Frameworkein Datenbankschema aus einem Conceptual Model erstellt werden kann.

Entity Model

Im folgenden Wizard, “Generate from Database” wählen und eine Verbindung zu der gerade erstellten Datenbank herstellen.

EDMX_GenerateFromDB

Beim Erzeugen des Entity Data Model nur die 3 Tabellen aspnet_Users, Feeds und Folders inkludieren, da wir die restlichen Tabellen (die aspnet_regsql.exe erzeugt hat) nicht brauchen.

EDMX_ChooseTables 

Fertig! Nun sollte folgendes Entity Data Model erzeugt worden sein.EF_Model

Im Entity Data Model Designer können die Namen der Entitäten und Properties nun noch beliebig geändert werden. Bei der Entität ‘Users’ zum Beispiel ist das Präfix ‘aspnet_’ entfernt, um die Lesbarkeit zu erleichtern.

Weiters können die Klassennamen der Entitäten und der erzeugen Entity-Sets in den Properties angepasst werden. Im Beispiel sind die Entitäten umbennant (Singular statt Plural) um zu verdeutlichen, dass es sich um einzelne Instanzen und nich um Auflistungen handelt.

EF_Properties

In Teil 2 wird dieses Datenmodell dann via ADO.NET Dataservices einer Silverlight Anwendung am Client zur Verfügung gestellt.

Downloads:

ADO.NET Data Services 1.5 CTP1

Links:

ASP.NET Authentifzierung in Silverlight

General | Web-Development

Tags:  Feed Tag

Comments

Add comment


(Will show your Gravatar icon)

  Country flag

biuquote
  • Comment
  • Preview
Loading



Windows Phone 7

Was halten Sie von Windows Phone 7



Show Results

Werbepause

CodeFest.at on Facebook

Calendar

<<  March 2010  >>
MoTuWeThFrSaSu
22232425262728
1234567
891011121314
15161718192021
22232425262728
2930311234

View posts in large calendar

www.microsoft.com/austria | © 2009 Microsoft Corporation. Alle Rechte vorbehalten.
BlogEngine.NET 1.5.0.7 powered by atwork