Format Format Format Format Enum

Definizione

Utilizzato dalle classi SqlUserDefinedTypeAttribute e SqlUserDefinedAggregateAttribute per indicare il formato di serializzazione di un tipo definito dall'utente (UDT) o di un aggregato definito dall'utente.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
Ereditarietà

Campi

Native Native Native Native 1

Questo formato di serializzazione usa un algoritmo molto semplice che consente a SQL Server di archiviare una rappresentazione efficace dell'UDT su disco.This serialization format uses a very simple algorithm that enables SQL Server to store an efficient representation of the UDT on disk. I tipi contrassegnati per la serializzazione Native possono avere come membri solo tipi di valore (struct in Microsoft Visual C# e strutture in Microsoft Visual Basic .NET).Types marked for Native serialization can only have value types (structs in Microsoft Visual C# and structures in Microsoft Visual Basic .NET) as members. I membri di tipi riferimento (come le classi in Visual C# e Visual Basic), definiti dall'utente o già esistenti nelle librerie di classe .NET (come String), non sono supportati.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 Unknown Unknown Unknown 0

Il formato di serializzazione è sconosciuto.The serialization format is unknown.

UserDefined UserDefined UserDefined UserDefined 2

Questo formato di serializzazione offre allo sviluppatore il controllo completo sul formato binario mediante i metodi Write(BinaryWriter) e Read(BinaryReader).This serialization format gives the developer full control over the binary format through the Write(BinaryWriter) and Read(BinaryReader) methods.

Esempi

Nell'esempio seguente viene illustrato UserDefinedType l'attributo del tipo definito dall'utente Point.The following example shows the UserDefinedType attribute of the Point UDT. Il tipo definito dall'utente è ordinato per byte, è denominato "Point", ha un metodo di convalida denominato "ValidatePoint" e usa il formato di serializzazione nativo.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

Commenti

Questa enumerazione viene utilizzata da SqlUserDefinedTypeAttribute e SqlUserDefinedAggregateAttribute per indicare il formato di serializzazione di un tipo definito dall'utente (UDT) o di un'aggregazione.This enumeration is used by SqlUserDefinedTypeAttribute and SqlUserDefinedAggregateAttribute to indicate the serialization format of a user-defined type (UDT) or aggregate. L' Native utilizzo dei membri UserDefined dell'enumerazione e presenta requisiti particolari.Use of the Native and UserDefined enumeration members has special requirements.

  • Format.Native

    I requisiti per il Format.Native formato sono:The requirements for the Format.Native format are:

    • L' StructLayoutAttribute oggetto conilLayoutKind.Sequential valore della proprietàdeveessereapplicatoall'aggregatooaltipodefinitodall'utenteseèdefinitoinunaclasseenoninunastruttura.ValueThe 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. Consente di controllare il layout fisico dei campi dati e viene utilizzato per forzare la disposizione sequenziale dei membri nell'ordine in cui appaiono.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 utilizza questo attributo per determinare l'ordine dei campi per i tipi definiti dall'utente con più campi.SQL Server uses this attribute to determine the field order for UDTs with multiple fields.

    • Il tipo deve contenere almeno un membro (i valori serializzati non possono avere dimensioni pari a zero byte).The type must contain at least one member (serialized values cannot be zero bytes in size).

    • Tutti i campi dell'aggregazione devono essere copiabili. ovvero, devono avere una rappresentazione comune nella memoria gestita e non gestita e non richiedono una gestione speciale da parte del gestore di marshalling di interoperabilità.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.

    • Tutti i campi del tipo definito dall'utente devono essere di uno dei seguenti tipi che possono essere serializzati bool: byte, sbyte, short, ushort, int, uint, long, ulong, float , , double, SqlByte, ,SqlInt16 ,SqlInt64, ,SqlSingle,, o altri tipi di valore definiti dall'utente che contengono campi di uno di questi SqlMoney SqlDateTime SqlInt32 SqlDouble tipi.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.

    • L'aggregazione non deve specificare un valore MaxByteSizeper.The aggregate must not specify a value for MaxByteSize.

    • L'aggregazione non deve contenere campi [NonSerialized].The aggregate must not have any [NonSerialized] fields.

    • StructLayoutAttribute.Value ILayoutKind.Explicitcampi non devono essere contrassegnati come layout esplicito (con).Fields must not be marked as an explicit layout (with a StructLayoutAttribute.Value of LayoutKind.Explicit).

  • Format.UserDefined

    I requisiti per il Format.UserDefined formato sono:The requirements for the Format.UserDefined format are:

Si applica a