Compartir vía


Format Enumeración

Definición

Lo utilizan SqlUserDefinedTypeAttribute y SqlUserDefinedAggregateAttribute para indicar el formato de serialización de un tipo definido por el usuario (UDT) o agregado.

public enum class Format
public enum Format
type Format = 
Public Enum Format
Herencia
Format

Campos

Native 1

Este formato de serialización utiliza un algoritmo muy simple que permite a SQL Server almacenar en disco una representación eficaz del UDT. Los tipos marcados para la serialización Native solo pueden tener como miembros tipos de valor ("structs" en Microsoft Visual C# y estructuras en Microsoft Visual Basic .NET). Los miembros de los tipos de referencia (como clases en Visual C# y Visual Basic), ya sean definidos por el usuario o existentes en las bibliotecas de clases de .NET (como String), no se admiten.

Unknown 0

Se desconoce el formato de serialización.

UserDefined 2

Este formato de serialización otorga al desarrollador pleno control sobre el formato binario a través de los métodos Write(BinaryWriter) y Read(BinaryReader).

Ejemplos

En el ejemplo siguiente se muestra el UserDefinedType atributo del UDT point. El UDT está ordenado por bytes, se denomina "Point", tiene un método de validación denominado "ValidatePoint" y usa el formato de serialización 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
{

Comentarios

Esta enumeración la usa SqlUserDefinedTypeAttribute y SqlUserDefinedAggregateAttribute para indicar el formato de serialización de un tipo definido por el usuario (UDT) o agregado. El uso de los miembros de enumeración Native y UserDefined tiene requisitos especiales.

  • Format.Native Los requisitos para el Format.Native formato son:

    • El StructLayoutAttribute objeto con un Value valor de propiedad de LayoutKind.Sequential debe aplicarse al agregado o UDT si se define en una clase y no en una estructura. Esto controla el diseño físico de los campos de datos y se usa para forzar que los miembros se establezcan secuencialmente en el orden en que aparecen. SQL Server usa este atributo para determinar el orden de campo de los UDT con varios campos.

    • El tipo debe contener al menos un miembro (los valores serializados no pueden tener un tamaño cero bytes).

    • Todos los campos del agregado deben ser controlables; es decir, deben tener una representación común en la memoria administrada y no administrada y no requieren un control especial por parte del serializador de interoperabilidad.

    • Todos los campos del UDT deben ser de uno de los siguientes tipos que se pueden serializar: bool, , byte, sbyte, shortSqlSingleulongfloatlongdoubleuintSqlByteSqlInt16intushortSqlInt64SqlDateTimeSqlInt32SqlDouble, SqlMoney, u otros tipos de valor definidos por el usuario que contienen campos de uno de estos tipos.

    • El agregado no debe especificar un valor para MaxByteSize.

    • El agregado no debe tener ningún campo [NonSerialized].

    • Los campos no deben marcarse como un diseño explícito (con un StructLayoutAttribute.Value de LayoutKind.Explicit).

  • Format.UserDefined Los requisitos para el Format.UserDefined formato son:

Se aplica a