Format Enumeration

Definition

Wird von SqlUserDefinedTypeAttribute und SqlUserDefinedAggregateAttribute verwendet, um das Serialisierungsformat eines benutzerdefinierten Typs (User-Defined Type, UDT) oder eines Aggregats anzugeben.Used by SqlUserDefinedTypeAttribute and SqlUserDefinedAggregateAttribute to indicate the serialization format of a user-defined type (UDT) or aggregate.

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.This serialization format uses a very simple algorithm that enables SQL Server to store an efficient representation of the UDT on disk. Für die Native-Serialisierung gekennzeichnete Typen dürfen als Member nur Werttypen (Strukturen in Microsoft Visual C# und Microsoft Visual Basic .NET) haben.Types marked for Native serialization can only have value types (structs in Microsoft Visual C# and structures in Microsoft Visual Basic .NET) as members. 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.Members of reference types (such as classes in Visual C# and Visual Basic), either user-defined or those existing in .NET class libraries (such as String), are not supported.

Unknown 0

Das Serialisierungsformat ist unbekannt.The serialization format is unknown.

UserDefined 2

Bei diesem Serialisierungsformat hat der Entwickler über die Write(BinaryWriter)-Methode und Read(BinaryReader)-Methode die volle Kontrolle über das Binärformat.This serialization format gives the developer full control over the binary format through the Write(BinaryWriter) and Read(BinaryReader) methods.

Beispiele

Das folgende Beispiel zeigt das UserDefinedType -Attribut des Point-UDT.The following example shows the UserDefinedType attribute of the Point UDT. Der UDT ist Byte geordnet, hat den Namen "Point", hat eine Validierungsmethode mit dem Namen "ValidatePoint" und verwendet das systemeigene Serialisierungsformat.The UDT is byte-ordered, is named "Point", has a validation method named "ValidatePoint", and uses the native serialization format.

[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 Enumeration wird von SqlUserDefinedTypeAttribute und SqlUserDefinedAggregateAttribute verwendet, um das Serialisierungsformat eines benutzerdefinierten Typs (User-Defined Type, UDT) oder eines Aggregats anzugeben.This enumeration is used by SqlUserDefinedTypeAttribute and SqlUserDefinedAggregateAttribute to indicate the serialization format of a user-defined type (UDT) or aggregate. Die Native Verwendung von- UserDefined und-Enumerationsmembern hat besondere Anforderungen.Use of the Native and UserDefined enumeration members has special requirements.

  • Format.Native

    Folgende Anforderungen gelten für Format.Native das Format:The requirements for the Format.Native format are:

    • Das StructLayoutAttribute -Objekt Value mit einem- LayoutKind.Sequential Eigenschafts Wert muss auf das Aggregat oder den UDT angewendet werden, wenn es in einer Klasse und nicht in einer Struktur definiert ist.The StructLayoutAttribute with a Value property value of LayoutKind.Sequential must be applied to the aggregate or UDT if it is defined in a class and not a structure. Dies steuert das physische Layout der Datenfelder und wird verwendet, um zu erzwingen, dass die Elemente sequenziell in der Reihenfolge angeordnet werden, in der Sie angezeigt werden.This controls the physical layout of the data fields and is used to force the members to be laid out sequentially in the order they appear. SQL Server verwendet dieses Attribut, um die Feld Reihenfolge für UDTs mit mehreren Feldern zu bestimmen.SQL Server uses this attribute to determine the field order for UDTs with multiple fields.

    • Der Typ muss mindestens einen Member enthalten (serialisierte Werte dürfen nicht 0 Bytes groß sein).The type must contain at least one member (serialized values cannot be zero bytes in size).

    • Alle Felder des Aggregats müssen blitfähig sein. ** Das heißt, dass Sie über eine gemeinsame Darstellung in verwaltetem und nicht verwaltetem Speicher verfügen müssen und keine besondere Behandlung durch den Interop-Mars Haller erfordern.All the fields of the aggregate must be blittable; that is, they must have a common representation in both managed and unmanaged memory and not require special handling by the interop marshaler.

    • Alle Felder des UDT sollten einen der folgenden Typen aufweisen, die serialisiert werden können: bool, long ulong byte, sbyte, short, ushort, int, uint,,, float , double, SqlByte, ,SqlInt16 ,SqlInt64, ,SqlSingle,, oder andere Werttypen, die vom Benutzer definiert werden, die Felder von einem dieser Felder enthalten. SqlMoney SqlDateTime SqlInt32 SqlDouble solche.All the fields of the UDT should be of one of the following types that can be serialized: bool, byte, sbyte, short, ushort, int, uint, long, ulong, float, double, SqlByte, SqlInt16, SqlInt32, SqlInt64, SqlDateTime, SqlSingle, SqlDouble, SqlMoney, or other value types defined by the user that contain fields of one of these types.

    • Das Aggregat darf keinen Wert für MaxByteSizeangeben.The aggregate must not specify a value for MaxByteSize.

    • Das Aggregat darf keine [NonSerialized]-Felder enthalten.The aggregate must not have any [NonSerialized] fields.

    • Felder dürfen nicht als explizites Layout (mit einem StructLayoutAttribute.Value von LayoutKind.Explicit) gekennzeichnet werden.Fields must not be marked as an explicit layout (with a StructLayoutAttribute.Value of LayoutKind.Explicit).

  • Format.UserDefined

    Folgende Anforderungen gelten für Format.UserDefined das Format:The requirements for the Format.UserDefined format are:

Gilt für: