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
-
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 |
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 dasFormat.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
,short
sbyte
,int
ushort
,uint
ulong
float
SqlByteSqlInt32SqlInt64SqlInt16long
double
SqlDateTime, SqlSingle, SqlDouble, , SqlMoneyoder andere Werttypen, die vom Benutzer definiert sind und Felder eines dieser Typen enthalten.Das Aggregat darf keinen Wert für
MaxByteSize
angeben.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 dasFormat.UserDefined
Format sind:Das Aggregat muss einen Wert für
MaxByteSize
angeben.Geben Sie die SqlUserDefinedTypeAttribute.IsByteOrdered Attributeigenschaft an. Der Standardwert ist
false
.Wenn Sie ein Feld in der IBinarySerialize.Read -Methode oder IBinarySerialize.Write weglassen, wird der Zustand dieses Felds nicht serialisiert.