Format Enumeración
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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 |
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 elFormat.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
,short
SqlSingleulong
float
long
double
uint
SqlByteSqlInt16int
ushort
SqlInt64SqlDateTimeSqlInt32SqlDouble, 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 elFormat.UserDefined
formato son:El agregado debe especificar un valor para
MaxByteSize
.Especifique la propiedad de SqlUserDefinedTypeAttribute.IsByteOrdered atributo. El valor predeterminado es
false
.Si omite algún campo de los IBinarySerialize.Read métodos o IBinarySerialize.Write , el estado de ese campo no se serializa.