Format Enumeration

Definition

Wird von SqlUserDefinedTypeAttribute und SqlUserDefinedAggregateAttribute verwendet, um das Serialisierungsformat eines benutzerdefinierten Typs (User-Defined Type, UDT) oder eines Aggregats anzugeben.

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

Felder

Native 1

Bei diesem Serialisierungsformat wird ein sehr einfacher Algorithmus verwendet, der SQL Server ermöglicht, eine effiziente Darstellung des UDTs auf dem Datenträger zu speichern. Für die Native-Serialisierung gekennzeichnete Typen dürfen als Member nur Werttypen (Strukturen in Microsoft Visual C# und Microsoft Visual Basic .NET) haben. Member von Verweistypen (z.B. Klassen in Visual C# und Visual Basic), benutzerdefinierte oder solche in .NET-Klassenbibliotheken (z.B. String), werden nicht unterstützt.

Unknown 0

Das Serialisierungsformat ist unbekannt.

UserDefined 2

Bei diesem Serialisierungsformat hat der Entwickler über die Write(BinaryWriter)-Methode und Read(BinaryReader)-Methode die volle Kontrolle über das Binärformat.

Beispiele

Das folgende Beispiel zeigt das UserDefinedType Attribut des Point UDT. Das UDT ist byte-ordered, ist "Point", verfügt über eine Validierungsmethode namens "ValidPoint", und verwendet das native Serialisierungsformat.

[Serializable]
[Microsoft.SqlServer.Server.SqlUserDefinedType(Format.Native,
     IsByteOrdered=true,
     Name="Point",ValidationMethodName = "ValidatePoint")]
public struct Point : INullable
{
<Serializable(), SqlUserDefinedTypeAttribute(Format.Native, _
  IsByteOrdered:=True, _
  Name:="Point", _
  ValidationMethodName:="ValidatePoint")> _
  Public Structure Point
    Implements INullable

Hinweise

Diese Aufzählung wird verwendet SqlUserDefinedTypeAttribute und SqlUserDefinedAggregateAttribute gibt das Serialisierungsformat eines benutzerdefinierten Typs (UDT) oder Aggregats an. Die Verwendung der Native Elemente und UserDefined Aufzählungen verfügt über spezielle Anforderungen.

  • Format.Native

    Die Anforderungen für das Format.Native Format sind:

    • Der StructLayoutAttribute Mit einem Eigenschaftswert muss LayoutKind.Sequential auf das Aggregat oder UDT angewendet werden, wenn er in einer Klasse definiert ist und keine Value Struktur. Dadurch wird das physische Layout der Datenfelder gesteuert und verwendet, um die Elemente in der Reihenfolge, in der sie angezeigt werden, zu erzwingen. SQL Server verwendet dieses Attribut, um die Feldreihenfolge für UDTs mit mehreren Feldern zu bestimmen.

    • Der Typ muss mindestens ein Element enthalten (serialisierte Werte können nicht null Bytes in Größe sein).

    • Alle Felder des Aggregats müssen verwendbar sein; das heißt, sie müssen eine gemeinsame Darstellung sowohl im verwalteten als auch nicht verwalteten Speicher haben und keine spezielle Behandlung durch den Interop-Marshaler erfordern.

    • Alle Felder des UDT sollten einer der folgenden Typen entsprechen, die serialisiert werden können: bool, SqlSingleulong``long``uint``floatSqlInt32SqlInt16SqlInt64SqlByteSqlDateTimeSqlDoublebyte``shortSqlMoneysbyte``ushort``int``doubleoder andere Werttypen, die vom Benutzer definiert sind, die Felder einer dieser Typen enthalten.

    • Das Aggregat darf keinen Wert für MaxByteSize.

    • Das Aggregat darf keine Felder [Nichtserialisiert] aufweisen.

    • Felder dürfen nicht als explizites Layout (mit einem StructLayoutAttribute.Value von LayoutKind.Explicit) gekennzeichnet werden.

  • Format.UserDefined

    Die Anforderungen für das Format.UserDefined Format sind:

Gilt für: