Freigeben über


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
Format

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. Die UDT ist bytegeordnet, hat den Namen "Point", verfügt über eine Validierungsmethode namens "ValidatePoint" und verwendet das native Serialisierungsformat.

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
{

Hinweise

Diese Enumeration wird von SqlUserDefinedTypeAttribute und SqlUserDefinedAggregateAttribute verwendet, um das Serialisierungsformat eines benutzerdefinierten Typs (UDT) oder eines Aggregats anzugeben. Die Verwendung der Native Enumerationsmember und UserDefined hat besondere Anforderungen.

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

    • Der StructLayoutAttribute mit dem Value Eigenschaftswert von LayoutKind.Sequential muss auf das Aggregat oder udT angewendet werden, wenn es in einer Klasse und nicht in einer Struktur definiert ist. Dies steuert das physische Layout der Datenfelder und wird verwendet, um zu erzwingen, dass die Elemente sequenziell in der Angezeigten Reihenfolge angeordnet werden. 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 dürfen nicht 0 Bytes groß sein).

    • Alle Felder des Aggregats müssen klein sein; Das heißt, sie müssen eine gemeinsame Darstellung sowohl im verwalteten als auch im nicht verwalteten Speicher aufweisen und benötigen keine besondere Behandlung durch den Interop-Marshaller.

    • Alle Felder des UDT müssen einen der folgenden Typen aufweisen, die serialisiert werden können: bool, , byte, shortsbyte, intushort, uintulongfloatSqlByteSqlInt32SqlInt64SqlInt16longdoubleSqlDateTime, SqlSingle, SqlDouble, , SqlMoneyoder andere Werttypen, die vom Benutzer definiert sind und Felder eines dieser Typen enthalten.

    • Das Aggregat darf keinen Wert für MaxByteSizeangeben.

    • Das Aggregat darf keine [Nichtserialisierten] Felder enthalten.

    • 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: