Compartilhar via


Format Enumeração

Definição

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 Native podem ter apenas tipos de valor (structs no Microsoft Visual C# e estruturas no Microsoft Visual Basic .NET) como membros. Não há suporte para membros de tipos de referência (como classes no Visual C# e Visual Basic) definidos pelo usuário ou existentes nas bibliotecas de classe .NET (como String).

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 o Format.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, uintlongdoubleSqlBytefloatSqlInt16SqlInt32ulongintSqlDateTimeSqlSingleSqlInt64SqlDouble, 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 o Format.UserDefined formato são:

Aplica-se a