Format Wyliczenie

Definicja

Używany przez SqlUserDefinedTypeAttribute i SqlUserDefinedAggregateAttribute do wskazywania formatu serializacji typu zdefiniowanego przez użytkownika (UDT) lub agregacji.

public enum class Format
public enum Format
type Format = 
Public Enum Format
Dziedziczenie
Format

Pola

Native 1

Ten format serializacji używa bardzo prostego algorytmu, który umożliwia SQL Server przechowywanie wydajnej reprezentacji udT na dysku. Typy oznaczone do Native serializacji mogą mieć tylko typy wartości (struktury w języku Microsoft Visual C# i struktury w programie Microsoft Visual Basic .NET) jako elementy członkowskie. Elementy członkowskie typów odwołań (takich jak klasy w visual C# i Visual Basic), zdefiniowane przez użytkownika lub istniejące w bibliotekach klas platformy .NET (na przykład String), nie są obsługiwane.

Unknown 0

Format serializacji jest nieznany.

UserDefined 2

Ten format serializacji zapewnia deweloperowi pełną kontrolę nad formatem binarnym za pomocą Write(BinaryWriter) metod i Read(BinaryReader) .

Przykłady

W poniższym przykładzie przedstawiono UserDefinedType atrybut punktu UDT. Funkcja UDT jest uporządkowana bajtowo, ma nazwę "Point", ma metodę weryfikacji o nazwie "ValidatePoint" i używa natywnego formatu serializacji.

using Microsoft.Data.SqlClient.Server;
using System.Data.SqlTypes;
using System.Text;

[Serializable]
[Microsoft.Data.SqlClient.Server.SqlUserDefinedType(Format.Native,
     IsByteOrdered = true,
     Name = "Point", ValidationMethodName = "ValidatePoint")]
public struct Point : INullable
{

Uwagi

Ta wyliczenie jest używana przez SqlUserDefinedTypeAttribute program i SqlUserDefinedAggregateAttribute wskazuje format serializacji typu zdefiniowanego przez użytkownika (UDT) lub agregacji. Użycie elementów Native członkowskich i UserDefined wyliczenia ma specjalne wymagania.

  • Format.Native Wymagania dotyczące Format.Native formatu to:

    • Wartość StructLayoutAttribute z właściwością ValueLayoutKind.Sequential musi być stosowana do agregacji lub udT, jeśli jest ona zdefiniowana w klasie, a nie do struktury. Steruje to fizycznym układem pól danych i służy do wymuszania sekwencjonowania elementów członkowskich w kolejności ich wyświetlania. SQL Server używa tego atrybutu do określenia kolejności pól dla tras zdefiniowanych przez użytkownika z wieloma polami.

    • Typ musi zawierać co najmniej jeden element członkowski (zserowane wartości nie mogą być zerowe w rozmiarze).

    • Wszystkie pola agregacji muszą być blittable; oznacza to, że muszą mieć wspólną reprezentację zarówno w pamięci zarządzanej, jak i niezarządzanej, a nie wymagają specjalnej obsługi przez marszałka międzyoperacyjnej.

    • Wszystkie pola udT powinny być jednym z następujących typów, które mogą być serializowane: bool, , byte, SqlDateTimeulonglongfloatSqlInt32SqlInt16SqlInt64SqlByteSqlSingleSqlDoublesbyteushortSqlMoneyshortintuintdoublelub inne typy wartości zdefiniowane przez użytkownika zawierające pola jednego z tych typów.

    • Agregacja nie może określać wartości dla MaxByteSizeelementu .

    • Agregacja nie może zawierać żadnych pól [niezwiązanych z danymi].

    • Pola nie mogą być oznaczone jako układ jawny (z znakiem StructLayoutAttribute.ValueLayoutKind.Explicit).

  • Format.UserDefined Wymagania dotyczące Format.UserDefined formatu to:

Dotyczy