Entschärfung: XML-Schema-Validierung

In .NET Framework 4.6 ermittelt die XSD-Schemavalidierung einen Verstoß gegen die Unique-Einschränkung, wenn ein Verbundschlüssel verwendet wird und ein Schlüssel leer ist.

Auswirkungen

Die Auswirkung dieser Änderung sollte minimal sein: In Abhängigkeit der Schemaspezifikation wir ein Schemavalidierungsfehler erwartet, wenn xsd:unique mithilfe eines Verbundschlüssels mit einem leeren Schlüssel verletzt wird.

Problemumgehung

Ob ein Schemavalidierungsfehler erkannt wird, wenn ein Verbundschlüssel über einen leeren Schlüssel verfügt, kann konfiguriert werden:

  • Angefangen bei den Apps, die auf .NET Framework 4.6 abzielen, ist die Ermittlung des Schemavalidierungsfehlers standardmäßig aktiviert. Es ist jedoch möglich, dieses Verhalten abzuwählen, wodurch der Schemavalidierungsfehler nicht ermittelt wird.

  • In unter .NET Framework 4.6 ausgeführten Apps, die jedoch auf .NET Framework 4.5.2 und frühere Versionen abzielen, wird eine Schemavalidierungsfehler nicht standardmäßig ermittelt. Es ist jedoch möglich, dieses Verhalten zu aktivieren, sodass der Schemavalidierungsfehler ermittelt wird.

Dieses Verhalten kann mithilfe der Klasse AppContext konfiguriert werden, um den Wert des Switches System.Xml.IgnoreEmptyKeySequences zu definieren. Da der Standardwert des Switches false (leere Schlüsselsequenzen werden nicht ignoriert) lautet, können auf .NET Framework 4.6 abzielende Apps dieses Verhalten abwählen, indem der folgende Code verwendet wird, um den Wert des Switches auf true festzulegen:

[!code-csharpAppCompat.IgnoreEmptyKeySequences#1] [!code-vbAppCompat.IgnoreEmptyKeySequences#1]

Bei Apps, die auf .NET Framework 4.5.2 und frühere Versionen abzielen, ist es möglich, da der Standardwert des Switches true (leere Schlüsselsequenzen werden ignoriert) lautet, sicherzustellen, dass ein Verbundschlüssel mit einem leeren Schlüssel einen Schemavalidierungsfehler generiert, indem der folgende Code zum Festlegen des Switchwerts auf false verwendet wird.

[!code-csharpAppCompat.IgnoreEmptyKeySequences#2] [!code-vbAppCompat.IgnoreEmptyKeySequences#2]

Siehe auch

Neuausrichtungsänderungen