Partager via


Format Énumération

Définition

Utilisé par SqlUserDefinedTypeAttribute et SqlUserDefinedAggregateAttribute pour indiquer le format de sérialisation d'un type défini par l'utilisateur ou d'un agrégat.

public enum class Format
public enum Format
type Format = 
Public Enum Format
Héritage
Format

Champs

Native 1

Le format de sérialisation utilise un algorithme très simple qui permet à SQL Server de stocker une représentation efficace du type défini par l'utilisateur sur le disque. Les types marqués pour la sérialisation Native peuvent avoir uniquement des types valeur (structs en Microsoft Visual C# et structures en Microsoft Visual Basic .NET) comme membres. Les membres de types référence (tels que les classes en Visual C# et Visual Basic), soit définis par l'utilisateur, soit ceux qui existent dans les bibliothèques de classse .NET (par exemple String), ne sont pas pris en charge.

Unknown 0

Le format de sérialisation est inconnu.

UserDefined 2

Le format de sérialisation permet au développeur une maîtrise totale du format binaire par le biais des méthodes Write(BinaryWriter) et Read(BinaryReader).

Exemples

L’exemple suivant montre l’attribut UserDefinedType de l’UDT point. L’UDT est ordonné en octets, est nommé « Point », possède une méthode de validation nommée « ValidatePoint » et utilise le format de sérialisation natif.

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
{

Remarques

Cette énumération est utilisée par et SqlUserDefinedAggregateAttribute pour indiquer le format de sérialisation d’un type défini par SqlUserDefinedTypeAttribute l’utilisateur (UDT) ou d’un agrégat. L’utilisation des membres d’énumération Native et UserDefined a des exigences particulières.

  • Format.Native Les conditions requises pour le Format.Native format sont les suivantes :

    • le StructLayoutAttribute avec une Value valeur de propriété de LayoutKind.Sequential doit être appliqué à l’agrégat ou à l’UDT s’il est défini dans une classe et non dans une structure. Cela contrôle la disposition physique des champs de données et est utilisé pour forcer les membres à être disposés séquentiellement dans l’ordre dans lequel ils apparaissent. SQL Server utilise cet attribut pour déterminer l’ordre de champ des UDT avec plusieurs champs.

    • Le type doit contenir au moins un membre (les valeurs sérialisées ne peuvent pas avoir une taille de zéro octet).

    • Tous les champs de l’agrégat doivent être blittables ; autrement dit, ils doivent avoir une représentation commune dans la mémoire managée et non managée et ne pas nécessiter une gestion spéciale par le marshaleur d’interopérabilité.

    • Tous les champs de l’UDT doivent être de l’un des types suivants qui peuvent être sérialisés : bool, , ushortSqlInt64byteulonglongfloatuintdoubleintSqlByteSqlInt16shortsbyteSqlDateTimeSqlSingleSqlInt32SqlDouble, , , SqlMoneyou d’autres types de valeurs définis par l’utilisateur qui contiennent des champs d’un de ces types.

    • L’agrégat ne doit pas spécifier de valeur pour MaxByteSize.

    • L’agrégat ne doit pas contenir de champs [non sérialisé].

    • Les champs ne doivent pas être marqués en tant que disposition explicite (avec un StructLayoutAttribute.Value de LayoutKind.Explicit).

  • Format.UserDefined Les conditions requises pour le Format.UserDefined format sont les suivantes :

S’applique à