Format Enumeração
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Usado por SqlUserDefinedTypeAttribute e SqlUserDefinedAggregateAttribute para indicar o formato de serialização de um UDT (tipo definido pelo usuário) ou de uma agregação.
public enum class Format
public enum Format
type Format =
Public Enum Format
- Herança
-
Format
Campos
Native | 1 | O formato de serialização usa um algoritmo muito simples que permite que o SQL Server armazene uma representação eficiente do UDT no disco. Os tipos marcados para a serialização |
Unknown | 0 | O formato de serialização é desconhecido. |
UserDefined | 2 | O formato de serialização dá ao desenvolvedor controle total sobre o formato binário por meio dos métodos Write(BinaryWriter) e Read(BinaryReader). |
Exemplos
O exemplo a seguir mostra o UserDefinedType
atributo do UDT de Ponto. O UDT é ordenado por bytes, é chamado de "Point", tem um método de validação chamado "ValidatePoint" e usa o formato de serialização 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
{
Comentários
Essa enumeração é usada por e SqlUserDefinedAggregateAttribute para indicar o formato de serialização de um tipo definido pelo SqlUserDefinedTypeAttribute usuário (UDT) ou agregação. O uso dos Native
membros de enumeração e UserDefined
tem requisitos especiais.
Format.Native
Os requisitos para oFormat.Native
formato são:O StructLayoutAttribute com um Value valor de propriedade de LayoutKind.Sequential deve ser aplicado à agregação ou UDT se ele for definido em uma classe e não em uma estrutura. Isso controla o layout físico dos campos de dados e é usado para forçar os membros a serem dispostos sequencialmente na ordem em que aparecem. SQL Server usa esse atributo para determinar a ordem de campo para UDTs com vários campos.
O tipo deve conter pelo menos um membro (valores serializados não podem ter zero bytes de tamanho).
Todos os campos da agregação devem ser blittable; ou seja, eles devem ter uma representação comum na memória gerenciada e não gerenciada e não exigir tratamento especial pelo marshaler de interoperabilidade.
Todos os campos do UDT devem ser de um dos seguintes tipos que podem ser serializados:
bool
,byte
, ,sbyte
,short
,ushort
,uint
long
double
SqlBytefloat
SqlInt16SqlInt32ulong
int
SqlDateTimeSqlSingleSqlInt64SqlDouble, , SqlMoneyou outros tipos de valor definidos pelo usuário que contêm campos de um desses tipos.A agregação não deve especificar um valor para
MaxByteSize
.A agregação não deve ter nenhum campo [não desserializado].
Os campos não devem ser marcados como um layout explícito (com um StructLayoutAttribute.Value de LayoutKind.Explicit).
Format.UserDefined
Os requisitos para oFormat.UserDefined
formato são:A agregação deve especificar um valor para
MaxByteSize
.Especifique a propriedade de SqlUserDefinedTypeAttribute.IsByteOrdered atributo. O valor padrão é
false
.Se você omitir qualquer campo nos IBinarySerialize.Read métodos ou IBinarySerialize.Write , o estado desse campo não será serializado.