Version 4.2.3

Die Version 4.2.3 wurde initial im Juni 2023 veröffentlicht.

Changelog (Release)

Bitte beachten Sie die folgenden Hinweise zu diesem Update

Für Betreuer

  • Denken Sie daran, das SqlUpdate für die installierten cardo4 Anwendungen aufzurufen (wenn das Monitoring aktiviert ist, wird dies bei korrekter Konfiguration selbständig ausgeführt).

  • Fragen Sie die anderen Hersteller Ihrer cardo4 Anwendungen, ob die "Hinweise für Entwickler" umgesetzt wurden.

  • Aktualisieren Sie ihre evtl. vorhandene lokale Installation für IduIT.GeoTools.Net.

Für Entwickler

  • Beachten Sie die mit BreakingChanges markierten Einträge.

  • Sie sollten auf die TypeScript Version 5.1 aktualisieren.

    Zum aktuellen Zeitpunkt ist der Link auf der TypeScript Seite falsch, hier steht die VisualStudio Extension für TypeScript 5.1.3 zum Download.

Aktualisierungen der Doku

September 2023

  • Fix: Formularkomponenten, die von Kiss.Ui.Form.Field.Picker ableiten, hatten u.U. bei Verwendung des Kiss.Ui.Form.Trigger.ClearButton das Problem, dass zwar das Feld geleert wurde, im Picker aber noch der alte Zustand sichtbar war. Der ClearButton schließt jetzt den Picker, sofern vorhanden (#8919).

August 2023

Release 4.2.3.55759 (08.08.2023)

  • Fix: Regression - Folgefehler in der Formularfeldanzeige behoben, die durch eine vorhergehende Korrektur in diesem Bereich entstanden sind (Sichtbarkeitsmaßstab anpassen; Puffer bilden; Geometrie Tastatureingabe).

Release 4.2.3.55708 (04.08.2023)

  • Fix: In der Puzzle-Workbench wurde beim Speichern des Layouts nicht für alle Felder eine Validierung der Conditions durchgeführt.

Juli 2023

Release 4.2.3.55649 (31.07.2023)

  • Fix: Die Option des Exports von Shape-Dateien mit Fließkommazahlen im Binary-Format wurde wieder deaktiviert, da die meisten einlesenden Programme dieses Format nicht verstehen.

  • Fix: Regression - Folgefehler in der Formularfeldanzeige behoben, der durch eine vorhergehende Korrektur in diesem Bereich entstanden ist.

Release 4.2.3.55606 (27.07.2023)

  • Fix: Die Sortierung von Ebenen mittels der Funktionen "ganz nach oben verschieben" oder "ganz nach unten verschieben" führt nun nicht mehr dazu, dass die Position der Grundkarte verändert wird.

Release 4.2.3.55537 (13.07.2023)

  • Neu: Die Kommentare in PIB - Anwendungen können jetzt selektiert werden (bspw. um den Text zu markieren und dann zu kopieren).

  • Fix: Beim Abgeben von WFS-Diensten wurde für Multi-Point Geometrien das GML-Element bisher mit der Bezeichnung MultiPointType ausgegeben. Korrekt ist jedoch MultiPoint.

Release 4.2.3.55498 (11.07.2023)

  • Neu: Das Nutzerprofil unter Mein Cardo wurde um einen Karteireiter Angaben zur Organisation erweitert. Damit lässt sich eine Zuordnung innerhalb der Unternehmensstruktur abbilden, die nach Bedarf von cardo-Anwendungen genutzt werdne kann.

Release 4.2.3.55461 (10.07.2023)

  • Neu: Die Komponente Kiss.Ui.Form.Field.CheckboxGroup unterstützt jetzt auch die Eigenschaft readonly.

  • Fix: Die GZip-Komprimierung bei Ajax-Aufrufen wird künftig auch dann angewandt, wenn lediglich eine öffnende spitze Klammer enthalten ist (bisher musste auch eine schließende spitze Klammer vorhanden sein).

Release 4.2.3.55286 (03.07.2023)

  • Neu: Die Generierung der Anzeigetitel von Ebenen, die aus dem Datenbrowser stammen, wurde noch mal etwas angepasst.

Juni 2023

4.2.3 (26.06.2023 )

Allgemeines im cardo4

  • Neu: In cardo wird der Anzeigename des angemeldeten Nutzers jetzt aus dem Nutzerprofil ermittelt, wenn der Authentication-Provider keinen Anzeigenamen liefert. Das Nutzerprofil finden Sie in der Anwendung mein cardo und dort unter dem Button Mein Profil.

    Anmeldename

  • Neu: Dialoge, Fenster und Benachrichtigungsmeldungen werden jetzt in ihrer Größe generell auf die maximale Bildschirmgröße beschränkt. Bei Nutzung kleiner Bildschirme oder auf Geräten mit hoher DPI Zahl (bspw. Tablets) konnte es sonst vorkommen, dass nicht alle Steuerelemente (vor allem Buttons) sichtbar waren.

    Diese Anpassung erfolgte durch globale Anpassungen der CSS-Dateien und durch eine modifizierte Auswertung der maxWith/maxHeight-Eigenschaften an den Client-Controls.

Datenbrowser

  • Neu: Im Kontextmenü eines Ordners gibt es jetzt eine Suchaktion. Hierbei wird für den gewählten Ordner das Dateisystem auf dem Server durchsucht.

  • Neu: Ebenen aus Datenbanken, die in die Karte geladen werden, bekommen jetzt nicht mehr "Daten aus" vorangestellt.

Sachdatenanzeige

  • Neu: Beim Übertragen einer Tabelle mit einer berechneten Spalte in die Datenbank mittels der Datenbrowser-Import-Funktion konnte es zu einem Objekt-Null-Referenz-Fehler kommen. Ursache waren noch unaufgelöste Verweise auf Geometrie-Daten (sog. LazyGeometry). Diese werden nun vor dem Import zu "echten" Geometrien aufgelöst.

  • Neu: Recherche in Sachdatenanzeige: In der Auswahlliste der Spaltennamen ist nun per Texteingabe eine Filterung der Liste möglich. (#8250)

    Sachdatenanzeige

  • Neu: ALKIS-Suchprovider: Bei der Verwendung in berechneten Spalten wird null ausgegeben, wenn mehr als ein Flurstück mit einem Suchausdruck gefunden wird (bspw. Angabe von Gemeindename und Flurstück -> die passenden Flurstücke aus allen Gemarkungen werden gefunden). Neu wird jetzt der Rang des Suchtreffers ausgewertet. Es wird immer die Geometrie des höchstrangigen Suchtreffers verwendet. Nur wenn mehrere Suchtreffer mit gleichem Rang gefunden werden, wird wie bisher null als Ergebnis geliefert. (#8508)

  • Fix: Sachdatenanzeige: Bei der Anzeige von Sachdaten zu Kartenebenen rutschte die Geometrie-Spalte nach hinten, wenn für andere Spalten eine Sortierung eingestellt wurde. Eine manuelle Korrektur war/ist nicht möglich, da die implizite Geometrie-Spalte keine Einstellmöglichkeit bietet. Künftig werden jedoch Geometriespalten grundsätzlich zu vorderst angezeigt (außer es gibt explizit anderslautende Einstellungen, die bei DB-Quellen aus dem Daten-Browser möglich sind).

  • Fix: Beim Wiederherstellen von Sitzungen mit mehreren geöffneten Sachdatentabellen gefilterter Ebenen wurde nur eine der gefilterten Sachdatentabellen wieder geöffnet. Dies ist nun korrigiert.

Einstellungen

  • Neu: Für Systemadministratoren wird jetzt initial der Karteireiter "Systemeinstellungen" angezeigt, wenn das Einstellungsfenster geöffnet wird. (#8523)

  • Neu: In den Systemeinstellungen können Systemadministratoren jetzt auch die wesentlichen Einstellungen der cardo3 "Meine Karten" ändern. Dadurch ist es möglich, die "Meine Karten"-Ids, die noch an vielen Stellen im cardo verwendet werden, vorerst auch im cardo4 weiter zu pflegen. (#8473)

  • Fix: Beim Testen einer URL in den Proxy-Einstellungen kam die Meldung "Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt", wenn der HTTP-Statuscode "Forbidden" zurückgeliefert wurde.

  • Fix: Beim Löschen eines frisch erstellten Eintrags in den Systemeinstellungen kam ein Fehler der Art Es ist kein Eintrag mit der Instanz-Id [test] des Typ ... , wenn der Eintrag noch nicht gespeichert war.

Anwendungen

  • Neu: Gazetteer: In den Einstellungen der Anwendung kann für den Speicherort jetzt statt der Id der Datenbank auch der Alias angegeben werden. (#8187)

  • Fix: Puzzle: Beim De-Registrieren einer Kategorie in einem IKX-Store auf DB-Basis wird jetzt eine ggf. auftretende innere Fehlermeldung sauber weitergegeben, so dass die Ursache ersichtlich wird, warum die Aktion fehlschlägt. (#8413)

Mein cardo

  • Neu: Im Freigabedialog für Sitzungen gibt es jetzt einen extra Button zum Übertragen der ausgewählten Nutzer oder Nutzergruppen auf die jeweils andere Seite. Damit ist es auch möglich mehrere Einträge auf einmal zu verschieben. (#8285)

    Freigabe

Symboleditor / GeoCSS

  • Neu: Beim Erstellen einer Klassifikation werden die Einträge jetzt direkt angezeigt / ausgeklappt (#8526).

  • Neu: Bei neu erstellten Symbolen, bspw. aus der Klassifikation, wurden die Standard-Größenangaben angepasst (Pixel statt Meter). (#5891)

  • Neu: Im Symboleditor ist nun bei Beschriftungen (Eigenschaft "text") eine Aktion zum Aufruf der Liste der (auf dem Server) verfügbaren Schriftarten, inkl. Vorschau der Glyphen/Symbole, integriert.

    Beschriftung

    Beschriftung

  • Änderung: Das Zeichnen der Textumrandung und des eigentlichen Textes wird nun pro Wort koordiniert und nicht mehr pro Buchstaben. Dadurch wird vermieden, dass bei großen Umrandungsstärken benachbarte Buchstaben (teilweise) verdeckt erschienen.

  • Fix: Der Symboleditor hatte den letzten Ansichtsstatus (Text/Formular) nur behalten, wenn der Dialog über das X geschlossen wurde.

Karte

  • Neu: "Meine Daten" werden jetzt in Ordnerstrukturen angezeigt. Die Ordner entsprechen dabei denen aus der Quelle. Wenn der Datenbrowser als Quelle verwendet wurde, dann wird die Ordnerstruktur wie dort definiert, angezeigt. Es wird kein Root Ordner Meine Daten für alle Daten erstellt. Nur für Daten aus Meine Daten bleibt dieser Ordner erhalten.

    Das Verhalten kann über die neue Einstellung in der Anwendung Einstellung unter Allgemeine Einstellungen / Karte im Parameter "Meine Daten" mit Ordnerstruktur global oder durch die Nutzer selber geändert werden.

    Ordnerstruktur

    Beachten Sie: Der Standardwert ist die Ordnerstruktur zu verwenden, d.h. um das alte Verhalten herzustellen müssen Sie die Einstellung (global) deaktivieren.

    Ebenen aus Datenbrowser-Tabellen bekommen die Ordner erst beim erneuten Bereitstellen der Ebene.

  • Neu: In der Geometrie-Toolbox kann eine Toleranz für die Operation "Difference" und "SymDifference" eingestellt werden.

    Toolbox

  • Neu: Im Maptip wurde der Titel des Treffers angepasst. Wenn das Zeilen-Limit erreicht wurde, wird darauf besonders hingewiesen.

    Maptip

    Maptip

  • Neu: Verbesserungen für den Aufruf der GetFeatureInfo-Seite bei WMS-Diensten über den Link "Ergebnis im Browser anzeigen":

    • Es werden nur noch die tatsächlich sichtbaren (angeschaltet und im sichtbaren Maßstabsbereich) Unter-Ebenen weitergegeben.

    • Der Aufruf wird nun so erzeugt, dass der verarbeitende WMS-Server auf den gleichen Kartenmaßstab zurück rechnet, wie ihn der Nutzer beim Klick in der Karte vor sich hatte. Bisher wurde der Aufruf konstant in einem Maßstab von 1:350 erzeugt, was zu Problemen führte, wenn der WMS-Server die Datenausgabe von gewissen Maßstabsbereichen abhängig macht.

    • Wichtig: Die genannten Verbesserungen wirken ausschließlich über den Link "Ergebnis im Browser anzeigen". Wenn für den WMS-Dienst in der Einstellung wmsGetFeatureInfoFormatOrder der Wert text/plain oder text/html;fragment oder keine Angabe gemacht ist, wird unter dem Link bereits Inhalt eines Server-zu-Server-Aufrufes ausgegeben. Dieser Inhalt berücksichtigt weder die Unter-Ebenen-Sichtbarkeiten, noch den Ausgangskartenmaßstab. Um die Ausgabe dieses Inhalts zu unterbinden, wird empfohlen den Parameter wmsGetFeatureInfoFormatOrder mit dem Wert text/html zu konfigurieren.

      Maptip

Stapeldruck

  • Neu: Der Stapeldruck ist nun auch im cardo4 integriert. Sofern eine Lizenz vorliegt, kann die Anwendung registriert und ausgewählten Nutzern freigeben werden. Die Oberfläche der Anwendung und Funktionalität entspricht 1:1 der aus dem cardo3.

Druck

  • Fix: Beschriftungsebenen mit aus Sachdaten erzeugtem Beschriftungstext führten zu einem Fehler bei der Legendengenerierung. Jetzt wird für die Legende stattdessen ein Standardtext verwendet.

Export

  • Neu: Beim Export in das Format Shape werden Fließkommawerte jetzt in der binären Form exportiert. damit sollten dort keine Fehler der Art "Ein Fließkommawert konnte nicht konvertiert werden (länger als die zulässige Feldgröße)." mehr auftreten (evtl. kommt nicht jedes Programm mit diesem Format zurecht, wir haben es in QGis und cardo getestet).

  • Neu: Im Export v4 gelten die Speicherbeschränkungen nicht mehr (das ist nicht neu, die Einstellung gibt es nicht mehr). In der Statuszeile wird jetzt ein Hinweistext ausgegeben.

Sonstiges

  • Neu: Verbesserung der Fehlerausgabe bei der Anzeige von Tabellen aus Excel-Dateien, wenn darin fehlerhafte Werte enthalten sind, so dass die Nutzer die betreffende Zelle finden und korrigieren können. (Ausgabe der Zeilen- und Spalten-Nummer)

  • Neu: Die SPA-Anwendungen und cardo4 geben jetzt die View-Port-Browsermetadaten aus. Damit wird die Darstellung auf Smartphones/Tablets verbessert.

  • Fix: Beim Konvertieren von Iwan6 zu Iwan7 trat ein Fehler wegen ungültigem CSS auf, wenn:

    • die Iwan6 Stilbeschreibung "LAYERRULES" hatte und eine der Regeln über kein einziges Symbol verfügte.
    • ein TrueType Marker mit dem CharCode 0 enthalten war.

Monitoring

  • Neu: Der Monitor erfasst jetzt auch Ereignisse aus dem s2sx-Handler (Datenübertragungen). Es werden Fehler und Erfolge protokolliert. Die Schwellwerte zu Meldungen bzgl. der Ausführungsdauer werden dabei aus den Standard-Einstellungen genommen (siehe web.config.template).

    Alternativ können diese Werte für diesen Diensttyp separat eingestellt werden. Dazu kann optional der Wert Monitoring.Thresholds.S2SX angegeben werden, Bsp.:

    <add key="{PROJEKTNAME.}Monitoring.Thresholds.S2SX" value="warning:6000-10000;error:10000-" />
    

API

Client

  • Neu: BreakingChange Änderung der Signatur der Methode Kiss.Core.Component.findParent

    Die Verwendung der Methode war ungünstig in der bisherigen Form. Jetzt wird ein Predicate mit TypeGuard erwartet.

    Sie sollten den TypeScript Code Ihrer Anwendung kompilieren.

    Für die einfachere Verwendung wurden in Kiss.Predicates einige neue Methoden hinzugefügt.

    //alt
    e.findParent(p => (p === element) ? p : null));
    //neu
    e.findParent(Kiss.Predicates.isSameValue(element)));
    
    //alt
    e.findParent(x => x instanceof SystemProperties.SystemPropertiesEditor ? x : null);
    //Neu
    e.findParent(Kiss.Predicates.instanceOf(SystemProperties.SystemPropertiesEditor));
    
    //alt
    e.findParent(p => p.toolWindowDesktop ? p.toolWindowDesktop : null)) ?? undefined;
    //neu
    e.findParent(Kiss.Predicates.selectedNotEmpty(p => p.toolWindowDesktop));
    
    //alt
    cmp.findParent(c =>
    {
        if (max != -1 && stack.length >= max)
              return c;
        if (c == stopEl)
              return c;
        //weitermachen
        return null;
    });
    //neu
      cmp.findParent((c): c is Kiss.Ui.Core.Component =>
      {
        if (max != -1 && stack.length >= max)
              return true;
        if (c == stopEl)
              return true;
        //weitermachen
        return false;
      });
    
  • Neu: BreakingChange Verarbeitung von Zeichenfolgen in Komponenten.

    Der Enumerationstyp ETextMode wurde um UnsafeHtml und SafeHtml erweitert. Die Interpretation von Html erfolgt fortan als UnsafeHtml!

    Für die durchgängige Nutzung stehen die neuen Hilfsmethoden encodeTextByMode, setElementStringContent und encodeTextByMode in Kiss.Ui.Core zur Verfügung.

    Bei UnsafeHtml wird der Inhalt vor der Ausgabe im Browser per "sanitize" um bestimmte Elemente bereinigt (bspw. Script-Tags entfernt).

    In dem Zusammenhang wurden einige Standards in Kiss-Komponenten geändert:

    • Der Standard-Renderer für Einträge im Grid (Grid.ValueRenderer.Default) führt jetzt immer htmlEncode aus. Bisher wurden Texte unkodiert als HTML ausgegeben.

    • Der Standard-List.ItemRenderer führt jetzt immer htmlEncode aus. Bisher wurden Texte unkodiert als HTML ausgegeben.

    • In der Konfig der MultiSelectBox gibt es nun zusätzlich die Option titleTextMode (Standard ist Text, d.h. html-kodierte Ausgabe).

    An den Methoden der Klasse Kiss.Lang.String gibt es folgende Anpassungen:

    • die Methode autoHtmlEncode führt htmlEncode aus, sobald "kritische" Elemente erkannt werden

    • neue Methode safeHtml()

    Wenn DOMPurify geändert wird, steht die WithModifiedDOMPurify Methode zur Verfügung, die sicherstellt dass die globale Einstellungen beibehalten werden. Bsp.:

    const html = IduIT.Core.Kiss.Lang.String.WithModifiedDOMPurify(
                    "Add_a_hook_to_make_all_links_open_a_new_window",
                    () => DOMPurify.sanitize(res.html)
                );
    
  • Neu: Neue Methode Kiss.Ui.Core.withSavedFocus(callback), diese merkt sich beim Starten das aktive Focus-Element und setzt es nach Ausführung wieder zurück, funktioniert auch in Verbindung mit Methoden die ein promise zurückliefern.

  • Neu: Die Config für Core.Componente wurde um das optionale css-Attribut erweitert.

  • Neu: Die Komponente CheckBoxButtonGroup beachtet jetzt Filter auf dem view.

  • Neu: Neue Methode zoomIfRequiredOrAlways() an IduIT.Core.Mapping.MapComponent.

  • Neu: Neue Hilfsmethode Kiss.Ui.Grid.createContextMenuWidgetButton()

  • Neu: Neue Methode setActiveSortColumn(col) an Kiss.Ui.Grid

  • Neu: Konsolidierung der Methoden des Modul-Loaders in einer Methode IduIT.Core.Web.getComponentCtorCallRegisterIfRequired, Bsp.:

    IduIT.Core.Web.getComponentCtorCallRegisterIfRequired<Kiss.Ui.Core.Component>(
        "IduIT.App.MeineApp.MeinNs",
        "MeineComponent")
    .done((ctor) =>
    {
        res.add(new ctor({
            flex: 1
        }));
    }).fail(Cardo4.raise);
    
  • Neu: Neue Methode setAnimation(iconCls,animation) in IduIT.Core.Web.Icons.

  • Neu: Kiss.Data.Store wurde um die Methode setRecords(record:TData[]) erweitert. Diese führt intern remove/add/update für alle übergeben Datensätze auf. Der Store enthält dann genau die neuen Daten.

  • Neu: Neue Component IduIT.Core.Kiss.Ui.HorizontalAccordion.HorizontalAccordionView.

  • Neu: Der Standard - selectable Mode für Textkomponenten kann über IduIT.Core.Kiss.Ui.Core.DefaultSelectable geregelt werden (i.d.R. nur für SPA Anwendungen sinnvoll)

  • Fix: Fehlerhafte Darstellung im Grid behoben, die bei mehreren Gruppierungen auftrat (geschachtelte Gruppen).

Server

  • Neu: Konzept der Field-Extensions in Puzzle umgesetzt, siehe IduIT.cardo.Core.CoreModules.Puzzle.Ikx.EntityExt.IIkxEntityExtension.

    • Bereitstellung von Field-Controls (UI-Eingabeelemente)
    • Typisierung der Daten
    • Support für Ausgaben in Scriban-Templates
    • Einstellbar in der cardo4 Puzzle-Workbench
  • Neu Ajax ...

    • Mit dem neuen Attribut AjaxProxyObjectAttribute kann eine Klasse eine Eigenschaft definieren, die vom Typ einer Klasse mit Ajax-Methoden ist.

      Damit erfolgt die Instanziierung über die verwendende Klasse, was Zugriff auf Konfigurationen etc. zulässt und es müssen nicht alle Methoden in der (Anwendungs-)Klasse bereitgestellt werden.

    • Das AjaxClassAttribute wurde um die Eigenschaft AllowInstanceCreation erweitert.

    • Der Ajax-Prozessor löst jetzt eine ArgumentException aus, wenn der Typ nicht zulässig ist.

    • Für abstrakte Klassen und Interfaces wird keine Variable mehr in der ts Datei generiert (export const FooRemote: IduIT.FooRemote.IAjax;)...

  • Neu: In SPA Anwendungen werden Aufrufe bekannter Typen besonders behandelt. Bspw. robots.txt und ähnlich Dateien. Die Controls müssen die neue Methode TryHandleWellknown implementieren.

    Das Standardverhalten ist dabei so, dass wenn die Datei physisch existiert, diese direkt ausgeliefert wird. Erfolgt keine Behandlung, wird der Status-Code 404 für diese Dateien geliefert (bisher wurde ein Fehler ausgegeben).

    Das Standardverhalten ist dabei so, dass wenn die Datei physisch existiert, diese direkt ausgeliefert wird. Erfolgt keine Behandlung, wird der Status-Code 404 für diese Dateien geliefert (bisher als Fehler).

    Wenn eine "Site" aufgerufen wird, die nicht existiert, kann (sollte) die neue SPAElementNotExistsException ausgelöst werden.

  • Neu: Einige Erweiterungen:

    • Neue Klassen IduIT.Core.Web.AntiXss mit den Methoden SecureSanitize und Sanitize (analog der neuen Client-Funktionen, siehe unten)
CodeGen
  • Neu: Anpassungen an unserer Visual-Studio 2022 Extension:

    • Die Aktion "Create .Net TypeScript Code" wird nur noch für Projekte vom Typ "csproj" ausgeführt.

    • Zudem kann die Aktion für bestimmte Projekte deaktiviert werden, fügen Sie dazu einen Block in die .csproj Datei nach folgendem Muster ein:

      <ProjectExtensions>
          <VisualStudio>
              <UserProperties IgnoreInGenerateTypeScriptCode="true" />
          </VisualStudio>
      </ProjectExtensions>
      
  • Neu: Die Code-Generierung der TS-Proxyklassen (Create .NET TypescriptCode) ist jetzt bis zu 2x schneller (abhängig von der Größe der Dokumentation des Assemblys)

  • Fix: u.U. wurde bei der Generierung von TS-Interfaces das extends Attribut mehrfach angefügt.

  • Fix: Tuple-Types mit mehr als 8 Einträgen wurden als geschachteltes Array ausgegeben.

PiB
  • Neu: Wenn DMS Referenzen zu einem PiB-Objekt vorhanden sind, ist das Löschen von Objekten nicht mehr möglich. Jetzt kommt eine Nachfrage, ob das Objekt trotzdem gelöscht werden soll.

  • Neu: Es gibt einen neuen Handler, der für die Unterstützung von "Aufräumvorgängen" verwendet werden kann(PibHdl.Sanitizer.GetFailedObjects() ...).

ORM
  • Neu: Für NpgSQL wurde bisher fest Pooling=true angefügt, jetzt wird der Standardwert (true) verwendet, d.h. das durch die Angabe des Parameters Pooling=false selbiges deaktiviert werden kann.

    Sollte ein Connection-Pooler (bspw. pgBouncer) eingesetzt werden, dann sollte Sie die Connection-String anpassen und das Pooling deaktivieren.

  • Neu: Für Fehler beim Laden von Typen kann jetzt ein Error-Handler bereitgestellt werden.

    Beispiel:

    var failedWi = new List<Tuple<string, ObjectModel.PiBObjectBase>>();
    using (PibHdl.Orm.RegisterLoadErrorHandler<ProcessModel.Impl.WorkitemRecord>(
        (failed, ex, reader) =>
        {
            if (failed.PiBOID == null)
                failed.PiBOID = reader.GetString(reader.GetOrdinal("PiBOID"));
    
            failedWi.Add(Tuple.Create<string, ObjectModel.PiBObjectBase>(ex.Message, failed));
            return null;
        }))
    {
        PibHdl.Orm.GetAll<ProcessModel.Impl.WorkitemRecord>().Consume();
    }
    
  • Neu: in den Linq-Expressions des ORM (GetManyByExpression etc.) können jetzt Enum-Werte (aber nur, wenn numerisch gespeichert) und nullable verwendet werden.

  • Neu: Dem Attribut DatabaseColumnAttribute wurde die Eigenschaft FunctionTemplateXXX hinzugefügt.

    Hier ein Beispiel für die Abbildung einer Untertabelle als JSON auf eine Datenspalte:

    [IduIT.Core.Data.ORM.DatabaseColumn("SJ",
        Flags = ColumnAttributs.IgnoreOnInsert | ColumnAttributs.IgnoreOnUpdate,
        FunctionTemplateMsSql =
                $"(select * from table where ptr2Id = {{PARENT_TABLE}}.id for json auto)",
        FunctionTemplatePostgreSQL =
                $"(select json_agg(row_to_json(v)) from table v where v.ptr2Id = {{PARENT_TABLE}}.id)")
    ]
    public string Foo {get;set;}
    

3rd Party

Update externer Bibliotheken:

  • TypeScript 4.9 zu 5.1
  • Scriban 5.5.2 zu 5.7.0
  • Markdig 0.30.4 zu 0.31.0
  • Newtonsoft.Json 13.0.2 zu 13.0.3
  • Nodatime 3.1.6 zu 3.1.9
  • TSLib 2.4.1 zu 2.5.3
  • JQuery 3.6.3 zu 3.7.0
  • Monaco 0.34.0 zu 0.39.0
  • Font Awesome 6.2.1 zu 6.4.0
  • DOMPurify 3.0.3
  • Oracle.ManagedDataAccess 21.4 zu 21.10

Zuletzt geändert: 22.04.2024 18:19:51 (erstmals erstellt 29.09.2023)