Format Enumeration
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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 |
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``float
SqlInt32SqlInt16SqlInt64SqlByteSqlDateTimeSqlDoublebyte``short
SqlMoneysbyte``ushort``int``double
oder 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:Das Aggregat muss einen Wert für
MaxByteSize
.Geben Sie die SqlUserDefinedTypeAttribute.IsByteOrdered Attributeigenschaft an. Der Standardwert ist
false
.Wenn Sie ein Feld in den IBinarySerialize.Read oder IBinarySerialize.Write Methoden auslassen, wird der Zustand dieses Felds nicht serialisiert.