Signatur von GetOrmTypeCacheValuesByBase geändert
Die Methoden Api.ORM.GetOrmTypeCacheValuesByBase haben eine andere Signatur. Der Returntyp ist jetzt IReadOnlyKeyedDictionarySet und der Parameter checkDesignTimeVisible ist entfallen. Dadurch ist jetzt Caching möglich und die Methode immer schnell.
- Meist genügt es den Typ der Zielvariable auf IReadOnlyKeyedDictionarySet anzupassen.
- Falls das Ergebnis noch verändert werden soll:
new OrmDataSourceCacheModel.Dictionary(Api.ORM.GetOrmTypeCacheValuesByBase(...);
- Falls der Filter auf DesignTimeVisible wirklich mal benötigt wird:
.Where(type => type.DesignTimeVisible) bzw. .Any(type => type.DesignTimeVisible)
auf das Ergebnis anwenden.
Migration von Control-Renderern
Die Interfaces IFormControlRenderer
und IFormControlBinder
haben sich geändert. Wenn wie üblich mit den ControlDefault*RendererBase
Klassen gearbeitet wird, ergibt sich dadurch als Auswirkung, dass einige Methoden, die vorher public
waren, jetzt protected
sind. Falls diese überschieben werden, muss das entsprechend der des Compiler-Fehlers nachgezogen werden.
Die Methoden IsControlVisible
und IsControlEditable
haben nicht mehr den optionalen Parameter overrideControl
. Immer wenn der benutzt wurde, hatte das zur Folge dass ein Renderer für ein beliebiges anderes Steuerelement genutzt wurde, für das er gar nicht geeignet ist und dessen Kontext womöglich falsch ist (z.B. falscher Teildatensatz). Die Methode darf immer nur auf dem Renderer aufgerufen werden, der für das Control erstellt wurde. Der hat dann auch automatisch das richtige Control. Die neue Methode TryRender kann benutzt werden, um das zu vereinfachen. Im Moment sind die Methoden nur obsolet.
Falls man ViewState
Instanzen selbst erzeugt (Was nicht empfohlen ist) brauchen diese jetzt schon im Konstruktor den Parent
, zu dem sie hinzugefügt werden sollen. Es wird empfohlen, die Funktion CreateViewStateForControl
zum erzeugen von ViewState
Instanzen zu verwenden.
Anpassungen an RelationTypeConfiguration
Type
Die Eigenschaft Type
ist jetzt streng typisiert. Eine Zuweisung ist äquivalent mit dem Setzen der entsprechenden AllTypes
Eigenschaften im SourceControl
bzw. TargetControl
.
Die Zuweisung in RelationsCreation
für programmierte Relationstypen ist nicht mehr erforderlich und sollten entfernt werden. Die Ermittlung erfolgt automatisch.
SourceTypes, TargetTypes
Die beiden Felder sind jetzt ebenfalls streng typisiert und geben die effektiven Quell- und Zieltypen an, und zwar immer unabhängig von EnumRelationCardinality
. Wenn AllTypes
gewählt ist, enthält die Liste einfach alle ORM-Tabellentypen inklusive Basistypen.
Es handelt sich um ein Dictionary
mit der EnumDataSource GUID
(=OrmType) als Schlüssel und den zugehörigen Metadaten zu dem Typ als Wert.
Um zu testen, ob ein bestimmter ORM-Typ zu dem Relationstyp passt, genügt es in jedem Fall .ContainsKey(ormTypeGuid)
aufzurufen. Das gilt sowohl für Basistypen als auch für konkrete ORM-Typen.
Falls man z.B. nur die Liste der konkreten Typen ohne Basistypen haben will geht das so:
relationConfiguration.SourceTypes.Where(ff => !ff.IsBaseType)
Mit der Umstellung sind die Eigenschaften aber auch read-only und können nicht mehr für die Definition programmierter Relationstypen zugewiesen werden. Dafür gibt es jetzt die Funktionen AddSourceType()
und AddTargetType()
.
// alt
relationConfiguration.TargetTypes.Add(EnumDataSourceExtension.AppointmentBaseGuid);
// neu
relationConfiguration.AddTargetType(EnumDataSourceExtension.AppointmentBase);
Änderung an IEmailAddressSelectionControlModifier
Der Rückgabetyp von GetSecondAdditionalColumnCriteria() und GetThirdAdditionalColumnCriteria() ist jetzt auch CriteriaOperator wie bei GetFirstAdditionalColumnCriteria().
Teil-Datentabelle “Addresses”: Spalte Bundesland der Auswahlliste geändert
Spalte State
ist weiterhin Text aber nur noch lesend. Gesetzt wird nun der Wert über die Spalte StateSelection
, die von Typ EnumStates
ist.
In ISubAddressesHelperImplementation
, SubAddressesHelperImplementation
und OrmSubAddressHelper
hat sich die Signatur von AddSubAddress
geändert, der String fürs Bundesland ist jetzt EnumStates
:
AddSubAddress(OrmBABase orm, string fieldName, string address, string additionalAddress1, string additionalAddress2, EnumAddressTypes addressType, string postalCode, string city, EnumStates state, EnumCountries country)