Ograniczenie: weryfikacja schematu XML
W programie .NET Framework 4.6 weryfikacja schematu XSD wykrywa naruszenie unikatowego ograniczenia, jeśli jest używany klucz złożony, a jeden klucz jest pusty.
Wpływ
Wpływ tej zmiany powinien być minimalny: na podstawie specyfikacji schematu oczekiwany jest błąd weryfikacji schematu, jeśli xsd:unique
zostanie naruszony przy użyciu klucza złożonego z pustym kluczem.
Czynności zapobiegawcze
Czy wykryto błąd weryfikacji schematu, jeśli klucz złożony ma jeden pusty klucz, jest funkcją konfigurowalną:
Począwszy od aplikacji przeznaczonych dla programu .NET Framework 4.6, wykrywanie błędu sprawdzania poprawności schematu jest domyślnie włączone; można jednak zrezygnować z niego, aby błąd weryfikacji schematu nie został wykryty.
W aplikacjach, które działają w programie .NET Framework 4.6, ale są przeznaczone dla programu .NET Framework 4.5.2 i starszych wersji, błąd sprawdzania poprawności schematu nie jest domyślnie wykrywany; można jednak wyrazić zgodę na to, aby wykryto błąd weryfikacji schematu.
To zachowanie można skonfigurować przy użyciu AppContext klasy w celu zdefiniowania wartości przełącznika System.Xml.IgnoreEmptyKeySequences
. Ponieważ wartość domyślna przełącznika to false
(puste sekwencje kluczy nie są ignorowane), aplikacje przeznaczone dla programu .NET Framework 4.6 mogą zrezygnować z zachowania przy użyciu następującego kodu, aby ustawić wartość przełącznika na true
:
// Ignore empty key sequences in apps that target .NET 4.6
AppContext.SetSwitch("System.Xml.IgnoreEmptyKeySequences", true);
' Ignore empty key sequences in apps that target .NET 4.6
AppContext.SetSwitch("System.Xml.IgnoreEmptyKeySequences", True)
W przypadku aplikacji przeznaczonych dla programu .NET Framework 4.5.2 i starszych wersji, ponieważ wartość domyślna przełącznika to true
(puste sekwencje kluczy są ignorowane), można upewnić się, że klucz złożony z pustym kluczem generuje błąd weryfikacji schematu przy użyciu następującego kodu, aby ustawić wartość przełącznika na false
.
// Do not ignore empty key sequences in apps that target .NET 4.5.1 and earlier
AppContext.SetSwitch("System.Xml.IgnoreEmptyKeySequences", false);
' Do Not ignore empty key sequences in apps that target .NET 4.5.1 And earlier
AppContext.SetSwitch("System.Xml.IgnoreEmptyKeySequences", False)