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 da 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 UDT (tipo definido pelo SqlUserDefinedTypeAttribute usuário) 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, SqlMoney, ou 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.