Udostępnij za pośrednictwem


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ć na to zgodę, 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)

Zobacz też