Süßer als vom verbotenen Baum?

10 Tipps für Windows Phone Mango Tipp 5 SQL Server am Windows Phone
Kommentare

Einst galt sie als Speise der Götter – „Mangifera indica“ so der lateinische Name der Frucht, die namensgebend für die neueste Version von Windows Phone ist. In dieser Artikelserie erfahren Sie Tipps und Tricks, die die Entwicklung Ihrer Windows-Phone-7.5-Applikation erleichtern sollen. Beginnen wollen wir mit dem Bauen von Standort-abhängigen Anwendungen.

Neu in Windows Phone Mango ist die Möglichkeit, Daten in einer SQL-CE-Datenbank abzuspeichern. SQL CE selbst ist Teil des Betriebssystems und kann aus der App heraus verwendet werden. Dabei wird ein längst verschollen geglaubtes Framework wiederbelebt. Nicht das komplexere Entity Frameworks, sondern der schlanke O/R Mapper Linq-To-SQL ist das Interface zwischen Silverlight und den relationalen Daten. Abbildung 1 zeigt die Architektur des Datenbankzugriffes. Die zwei Szenarien für den Einsatz der Datenbank sind als Offline-Cache für Benutzerdaten oder als Speicher für mitgelieferte Referenzdaten. In beiden Fällen muss erst mal eine Datenklasse angelegt und mit Mapping-Attributen versehen werden. Weiter muss ein abgeleiteter DataContext erstellt werden, wie in Listing 1 ersichtlich.

Abb. 1: Datenbankzugriff auf SQL CE
Abb. 1: Datenbankzugriff auf SQL CE
Listing 1: SQL CE als Cache

[Table]
public class Wine
{
  [Column(IsPrimaryKey=true)]
  public string WineID { get; set; }
  [Column]
  public string Name { get; set; }
  ...
}
public partial class WineDataContext : DataContext 
{
  public Table Wines;
  public Table Vineyards;
  public WineDataContext(string connection) : base(connection) { }
}
// Aufruf der Datenbank im Code
DataContext db = new WineDataContext("isostore:/wineDB.sdf");
// Option für Referenzdaten: 
// var db = new WineDataContext("Data Source='appdata:/db.sdf';File Mode='Read Only'");
if (!db.DatabaseExists()) 
    db.CreateDatabase();

Wine newWine = new Wine()
{
  WineID = "1768",
  Name = "Venus Cuvée",
};
db.Wines.InsertOnSubmit(newWine);
db.SubmitChanges();
  
SQL CE als Cache

Das Cache-Szenario eignet sich besonders gut dafür, heruntergeladene oder von Benutzern eingegebene komplexe Datenstrukturen in relationaler, schnell durchsuchbarer Form abzulegen. Wird SQL CE als Cache verwendet, so befindet sich die Datenbankdatei im Isolated Storage. Dies wird, wie in Listing 7 gezeigt, durch den speziellen URL-Prefix isostore:/ definiert. Da der Isolated Storage nicht bei der Installation vorbefüllt werden kann, wird die Datenbank gegebenenfalls beim ersten Aufruf angelegt und somit der Cache initialisiert. Danach bleibt die Datenbank solange bestehen, bis sie entweder manuell gelöscht wird, oder die Applikation deinstalliert wird.

SQL CE für Referenzdaten

Im zweiten Szenario wird eine vorbefüllte Datenbankdatei mit Referenzdaten als Teil des Projektes ausgeliefert. Dabei kann es sich zum Beispiel um die Postleitzahlen und Adressdaten eines Landes handeln. Die Datenbank befindet sich diesmal nicht im Isolated Storage, sondern im Installationsverzeichnis der App. Die SQL-CE-.SDF Datei wird normal am Desktop angelegt. Dabei gilt es zu beachten, dass es sich bei der neu erstellten Datei um eine Datei älteren SQL-CE-3.5-Formats handelt. Einmal erstellt kann mittels SQL Management Studio die Datenbank befüllt werden. Abschließend wird die SDF-Datei als „Content“ in das Visual-Studio-Projekt eingefügt. Anders als im Caching-Szenario wird die Datei über einen anderen URL-Prefix appdata:/ und ausschließlich zum Lesen angesprochen.

Fazit: Windows Phone „Mango“ bringt einen echten SQL-CE-Server mit. Dieser kann entweder als on the Fly erstellter Cache oder als vorbefüllter Referenzdatenspeicher verwendet werden.

DI Max Knor ist Technologieberater für Softwareentwicklung. Er betreut als Technical Global Alliance Manager bei Microsoft Corp. eine Hand voll internationaler ISVs im Bereich Retail-Software. Max hält Vorlesungen zu Cloud Computing, Softwarearchitekturen und Webentwicklung an zwei Fachhochschulen.
Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -