Ler em inglês

Partilhar 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.

C#
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.

C#
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

Produto Versões
SqlClient .NET Core 1.0, 1.1, 2.0, 2.1, 3.0, 3.1, 4.0, 4.1
SqlClient .NET Framework 1.0, 1.1, 2.0, 2.1, 3.0, 3.1, 4.0, 4.1
SqlClient .NET Standard 1.0, 1.1, 2.0, 2.1, 3.0, 3.1, 4.0, 4.1