Format Enum
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
| Name | Wert | Beschreibung |
|---|---|---|
| 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.NativeDie Anforderungen für dasFormat.NativeFormat 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.UserDefinedDie Anforderungen für dasFormat.UserDefinedFormat sind:Das Aggregat muss einen Wert für
MaxByteSizeangeben.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.