Format Énumération
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
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 |
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 leFormat.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
, ,ushort
SqlInt64byte
ulong
long
float
uint
double
int
SqlByteSqlInt16short
sbyte
SqlDateTimeSqlSingleSqlInt32SqlDouble, , , 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 leFormat.UserDefined
format sont les suivantes :L’agrégat doit spécifier une valeur pour
MaxByteSize
.Spécifiez la propriété d’attribut SqlUserDefinedTypeAttribute.IsByteOrdered . La valeur par défaut est
false
.Si vous omettez un champ dans les IBinarySerialize.Read méthodes ou IBinarySerialize.Write , l’état de ce champ n’est pas sérialisé.