LightSwitch – Genauer hingeschaut Teil 1 (Teil 5)
Kommentare

Dazu bedarf es zunächst eines generierten Methodengrundgerüsts, in dem bei der Validierung eingegriffen werden kann. Öffnen Sie hierfür wiederum SearchDepartmentsHeadSinclair in der Designansicht und

Dazu bedarf es zunächst eines generierten Methodengrundgerüsts, in dem bei der Validierung eingegriffen werden kann. Öffnen Sie hierfür wiederum SearchDepartmentsHeadSinclair in der Designansicht und klicken Sie in der hierarchischen Layoutansicht auf MinDepartmentsProp. Im Eigenschaftenfenster befindet sich nun am unteren Ende eine Schaltfläche, CUSTOM VALIDATION (Abb. 10). Sobald Sie auf diese klicken, wird ein Methodengrundgerüst generiert, das wiederum sinnig benannt wird: _Validate (Listing 3).

Listing 3

public partial class SearchDepartmentsHeadSinclair
{
partial void MinDepartmentsProp_Validate(ScreenValidationResultsBuilder      results)
   {
    //Ihr Code hier     
}
}  

Die Ermittlung der Anzahl der tatsächlich existierenden Abteilungen ist ebenfalls schnell erledigt. Es existiert ein öffentlich zugängliches Objekt des Typs DataWorkspace mit dem Namen DataWorkspace. Dieses enthält unter anderem alle Abfragen als Methoden mit dem Rückgabewert IQueryable. Listing 4 zeigt die Verwendung der Methode AllDepartments().

Listing 4: Ausführung einer Abfrage im Code

partial void MinDepartmentsProp_Validate(ScreenValidationResultsBuilder results)
{
Int32 depCount = this.DataWorkspace.ApplicationData.AllDepartments().Execute().Count();
   if(MinDepartmentsProp > depCount)
       results.AddPropertyError("Number of minimum departments too high.");
}  

Damit das IQueryable-Objekt effektiv eine Liste von Objekten des Typs Department liefert, muss noch die Execute()-Methode aufgerufen werden. Konsequenterweise liefert die IEnumerable-Methode Count() das gewünschte Resultat. Danach reicht es, die Eigenschaft selbst mit dem ermittelten Wert zu vergleichen und bei Bedarf einen Fehler (über die Methode AddPropertyError des als Parameter gelieferten Objekts vom Typ ScreenValidationResultsBuilder). Abbildung 11 zeigt die Ausgabe der Applikation im Fall einer Falscheingabe und fehlgeschlagenen Validierung der Eigenschaft MinDepartmentsProp. Zum als fehlerhaft markierten Feld gesellt sich noch ein Hinweis, der die definierte Fehlermeldung ausgibt.

Damit das IQueryable-Objekt effektiv eine Liste von Objekten des Typs Department liefert, muss noch die Execute()-Methode aufgerufen werden. Konsequenterweise liefert die IEnumerable-Methode Count() das gewünschte Resultat. Danach reicht es, die Eigenschaft selbst mit dem ermittelten Wert zu vergleichen und bei Bedarf einen Fehler (über die Methode AddPropertyError des als Parameter gelieferten Objekts vom Typ ScreenValidationResultsBuilder). Abbildung 11 zeigt die Ausgabe der Applikation im Fall einer Falscheingabe und fehlgeschlagenen Validierung der Eigenschaft MinDepartmentsProp. Zum als fehlerhaft markierten Feld gesellt sich noch ein Hinweis, der die definierte Fehlermeldung ausgibt.

Abb. 11: Angepasste Validierung von
Abb. 11: Angepasste Validierung von „MinDepartmentsProp“ in Aktion

Mit dem DataWorkspace haben Sie einen zentralen Anlaufpunkt, über den Sie jederzeit von überall im Code Zugriff auf die von Ihnen definierten Abfragen haben.

Fazit

Ja, es stimmt: Microsoft zielt mit seinem RAD-Entwicklerwerkzeug LightSwitch auf die schnelle Erstellung von datengetriebenen Anwendungen, die mit möglichst wenig Programmieraufwand vonstatten gehen soll. Wie Sie aber bemerkt haben, bedeutet das nicht das Ende aller Programmiermöglichkeiten. Bestimmte Abfragentypen lassen sich ohne Programmieraufwand einfach nicht erstellen, das sind von den entsprechenden Designern nicht unterstützt werden. Hier schafft Microsoft Abhilfe, indem es die Erstellung von Methodengrundgerüsten bereitstellt (ausführbar per Mausklick), in denen Sie schnell und mit wenig Programmieraufwand die gewünschten Resultate erzielen können. Häufig ist dafür LINQ notwendig, was für einen schlanken und leicht les- und wartbaren Quellcode sorgt. Gleichermaßen unterstützt Sie das Tool, indem es bei der Erstellung sowohl der Entitäten als auch der Methoden eine sinnvolle Nomenklatur verwendet und somit einen leichten Einstieg bietet. Die Entwicklung von Abfragen, deren Ausführung per Code und die codebasierte Validierung von Screen-Feldern gehen schnell und unkompliziert über die Bühne. Man hat nie das Gefühl, im Projekt verloren zu sein oder nicht die Kontrolle darüber behalten zu können, wo welche Modifikationen vorgenommen wurden. Dazu trägt in nicht unerheblichem Maße auch die hierarchische Übersicht des Werkzeugs bei, die einen schnellen Überblick über die Projektstrukturen ermöglicht. Es scheint, als habe Microsoft den Spagat geschafft, einerseits ein einfaches und schnelles RAD-Tool bereitzustellen, das zusätzlich noch genügend Spielraum für Anpassungen individueller Natur offen lässt. Der zweite Teil des Artikels wird sich mit der Behandlung von Datenereignissen, benutzerdefinierten Kommandos, der codebasierten Modifizierung von Screens und der Behandlung von Screenereignissen beschäftigen.

Martin W. Angler hat in Bozen und Wien studiert und arbeitet derzeit als Softwareentwickler an der Europäischen Akademie Bozen. Er befasst sich mit der Entwicklung von .NET-basierten Webapplikationen und SharePoint-Anpassungen. Er führt ein Weblog unter http://angler.wordpress.com.

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -