Umsetzung

Da nun intern nicht mehr mit Dateipfaden, sondern mit den Repository-IDs gearbeitet wird ist deren Aufbau wichtig zu verstehen. Somit setzt sich eine Repository-ID als Zeichenkette mit folgendem Aufbau aus zwei Teilen zusammen:

Prefix: repository://

ID: {53F875F0-6177-8AD5-01B44E3A9867}

Beispiel: repository://{53F875F0-6177-8AD5-01B44E3A9867}

Allen Funktionen wie bspw. Design, Print, Export, ProvideInformationReadOnlyBase.RepositoryId in WebReportDesignerController.OnProvideListLabel u.v.m, denen bisher der Dateipfad des Projekts übergeben wurde (bspw. C:\Reports\Invoice.lst), wird stattdessen nun die vollständige Repository-ID (bspw. repository://{53F875F0-6177-8AD5-01B44E3A9867}) übergeben:

// Ohne Repository-Modus:

LL.Design(LlProject.List, "C:\Reports\Invoice.lst")

 

// Mit Repository-Modus – gilt auch für Export() bzw. Print():

LL.FileRepository = new MyCustomRepository(…);

LL.Design(LlProject.List, "repository://{53F875F0-6177-8AD5-01B44E3A9867}")

Auch alle Funktionen der Implementierung des Interfaces IRepository bekommen als Parameter die vollständige Repository-ID (Prefix + ID) übergeben. Aus "Dateien" werden im Repository-Modus "Repository-Items" (Elemente) und aus den Dateinamen werden "Repository-IDs". Jedes Repository-Item (Element) besitzt neben der ID einen Typ, einen Zeitstempel und einen Bezeichner (String mit variabler Länge, der interne Informationen enthält). Ihre Repository-Implementierung muss neben dem Dateiinhalt also mindestens diese vier Informationen für jedes Repository-Item (Element) speichern und abrufen können.

Sie finden eine einfache Repository-Implementierung in den ASP.NET-Beispielprojekten (Klasse SQLiteFileRepository), die ein Repository mit einer SQLite-Datenbank als Datenspeicher bereitstellt.

Detailliertere Beschreibungen der zu implementierenden Methoden im IRepository-Interface entnehmen Sie bitte der .NET-Onlinehilfe (combit.ListLabel31.chm).