Stefan Frutigers Blog

über die Programmierung von SharePoint, Workflows, Office

SharePoint und die fehlende "referentielle Integrität"

Manche Leute sehen SharePoint einfach gesagt als Datenspeicher mit einem Web-Frontend. Das stimmt soweit: denn die Datenspeicherung mit den Listen und Document Libraries ist elegant gelöst und das Aussehen des konfortablen ASP .NET 2.0 User Interfaces kann hervorragend an Kundenwünsche angepasst werden.

Dadurch ist man versucht, die Anforderungen an SharePoint hoch anzusetzen: Man könnte ja fortan jede datenzentrische Applikation mit SharePoint implementieren. Das User Interface, das man vorher umständlich selber entwickeln musste, gibt es nun quasi "gratis" mitgeliefert.

SharePoint darf jedoch nicht auf die gleiche Stufe wie ein relationales Datenbanksystem gestellt werden. SharePoint benutzt zwar unter der Haube den MS SQL Server um Daten zu speichern, gibt aber die "Datenbank-Features", wie etwa die referentielle Integrität, nicht weiter. Was in den SharePoint Listen eindeutig fehlt sind Constraints (z.Bsp. Unique Key Constraints) und Fremdschlüssel.

Fazit: Mit den Bordmitteln von SharePoint können wir keine Eindeutigkeit und keine referentielle Integrität garantieren.

Dies wurde mit heute (anlässlich der TechEd in Barcelona) von den beiden SharePoint Profis Ben Robb (cScape) und Jan Tielens (u2u) bestätigt.

Die Lösung dieses Problems ist naheliegend, denn SharePoint ist mit seinem Objektmodell gut erweiterbar: das Mittel heisst Events. Mit den vorbereiteten Event Receivern, z.Bsp. der SPItemEventReceiver Klasse, können synchron Events abgefangen, ausgewertet und wenn nötig abgebrochen werden, denn das übergebene properties Argument enthält ein Cancel Property.

Wir haben keine Wahl: wir müssen die Lücke selber füllen und können nur hoffen, dass Microsoft unser Anliegen kennt und in der nächsten SharePoint Version eine Lösung anbietet.

Kommentare

Stefan Frutigers Blog sagte:

Hier der C# Code zu dem Post von gestern ( SharePoint und die fehlende "referentielle Integrität"

# November 6, 2007 7:43
Kommentar abgeben

(verpflichtend) 

(verpflichtend) 

(optional)

(verpflichtend)