Format Enumerazione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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 class Format
public enum Format
type Format =
Public Enum Format
- Ereditarietà
-
Format
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 |
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). |
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
{
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 ilFormat.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:
bool
SqlDateTimeulong
long
uint
float
SqlInt32SqlInt16SqlInt64SqlByteSqlSingleSqlDoublebyte
short
SqlMoneysbyte
ushort
int
double
, 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 ilFormat.UserDefined
formato sono:L'aggregazione deve specificare un valore per
MaxByteSize
.Specificare la proprietà dell'attributo SqlUserDefinedTypeAttribute.IsByteOrdered . Il valore predefinito è
false
.Se si omette qualsiasi campo nei IBinarySerialize.Read metodi o IBinarySerialize.Write , lo stato di tale campo non viene serializzato.