Format Enumerazione

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.

public enum Format
Ereditarietà
Format

Campi

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. 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). 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.

Unknown 0

Il formato di serializzazione è sconosciuto.

UserDefined 2

Questo formato di serializzazione offre allo sviluppatore il controllo completo sul formato binario mediante i metodi Write(BinaryWriter) e Read(BinaryReader).

Esempio

Nell'esempio seguente viene illustrato l'attributo UserDefinedType del punto UDT. L'UDT è ordinato per byte, è denominato "Point", ha un metodo di convalida denominato "ValidatePoint" e usa il formato di serializzazione nativo.

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
{

Commenti

Questa enumerazione viene usata da SqlUserDefinedTypeAttribute e SqlUserDefinedAggregateAttribute per indicare il formato di serializzazione di un tipo definito dall'utente (UDT) o aggregazione. L'uso Native dei membri e UserDefined di enumerazione presenta requisiti speciali.

  • Format.Native I requisiti per il Format.Native formato sono:

    • L'oggetto StructLayoutAttribute con un Value valore di proprietà di LayoutKind.Sequential deve essere applicato all'aggregazione o all'UDT se è definito in una classe e non a una struttura. Questo controlla il layout fisico dei campi dati e viene usato per forzare che i membri vengano disposti in sequenza nell'ordine in cui vengono visualizzati. SQL Server usa questo attributo per determinare l'ordine di campo per le UDT con più campi.

    • Il tipo deve contenere almeno un membro (i valori serializzati non possono essere pari a zero byte di dimensioni).

    • Tutti i campi dell'aggregazione devono essere blittable; ovvero, devono avere una rappresentazione comune sia in memoria gestita che non gestita e non richiedono una gestione speciale da parte del marshalling dell'interoperabilità.

    • Tutti i campi dell'UDT devono essere di uno dei tipi seguenti che possono essere serializzati: boolSqlDateTimeulonglonguintfloatSqlInt32SqlInt16SqlInt64SqlByteSqlSingleSqlDoublebyteshortSqlMoneysbyteushortintdouble, o altri tipi di valore definiti dall'utente che contengono campi di uno di questi tipi.

    • L'aggregazione non deve specificare un valore per MaxByteSize.

    • L'aggregazione non deve avere alcun campo [NonSerializzato].

    • I campi non devono essere contrassegnati come layout esplicito (con un StructLayoutAttribute.Value oggetto di LayoutKind.Explicit).

  • Format.UserDefined I requisiti per il Format.UserDefined formato sono:

Si applica a