Format Výčet
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Používá a SqlUserDefinedTypeAttributeSqlUserDefinedAggregateAttribute k označení formátu serializace uživatelem definovaného typu (UDT) nebo agregace.
public enum class Format
public enum Format
type Format =
Public Enum Format
- Dědičnost
-
Format
Pole
Native | 1 | Tento serializační formát používá velmi jednoduchý algoritmus, který umožňuje SQL Server uložit efektivní reprezentaci UDT na disku. Typy označené pro |
Unknown | 0 | Formát serializace je neznámý. |
UserDefined | 2 | Tento formát serializace dává vývojáři plnou kontrolu nad binární formát prostřednictvím Write(BinaryWriter) a Read(BinaryReader) metody. |
Příklady
Následující příklad ukazuje UserDefinedType
atribut Point UDT. UDT je seřazený podle bajtů, má název "Point", má metodu ověřování s názvem "ValidatePoint" a používá nativní formát serializace.
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
{
Poznámky
Tento výčet je používán SqlUserDefinedTypeAttribute a SqlUserDefinedAggregateAttribute k označení formátu serializace uživatelem definovaného typu (UDT) nebo agregace. Použití členů výčtu Native
a UserDefined
má zvláštní požadavky.
Format.Native
Formát má následující požadavkyFormat.Native
:Hodnota StructLayoutAttribute s Value hodnotou LayoutKind.Sequential vlastnosti musí být použita pro agregaci nebo UDT, pokud je definována ve třídě a ne ve struktuře. To řídí fyzické rozložení datových polí a slouží k vynucení postupného rozložení členů v pořadí, v jakém se objeví. SQL Server používá tento atribut k určení pořadí polí pro UDT s více poli.
Typ musí obsahovat alespoň jeden člen (serializované hodnoty nesmí mít velikost nula bajtů).
Všechna pole agregace musí být rozsvícená; to znamená, že musí mít společnou reprezentaci ve spravované i nespravované paměti a nevyžadují zvláštní zpracování zařazováním zprostředkovatele komunikace.
Všechna pole UDT by měla mít jeden z následujících typů, které lze serializovat: , , ,
short
long
uint
int
sbyte
ushort
,ulong
,float
double
, SqlInt64SqlDateTimeSqlDoubleSqlMoneySqlInt16SqlSingleSqlByteSqlInt32nebo jiné hodnotové typy definované uživatelem, které obsahují pole jednoho z těchto typů.byte
bool
Agregace nesmí zadávat hodnotu pro
MaxByteSize
.Agregace nesmí obsahovat žádná pole [NonSerialized].
Pole nesmí být označena jako explicitní rozložení (s hodnotou StructLayoutAttribute.ValueLayoutKind.Explicit).
Format.UserDefined
Formát má následující požadavkyFormat.UserDefined
:Agregace musí určovat hodnotu pro
MaxByteSize
.Zadejte vlastnost atributu SqlUserDefinedTypeAttribute.IsByteOrdered . Výchozí hodnota je
false
.Pokud vynecháte jakékoli pole v IBinarySerialize.Read metodách nebo IBinarySerialize.Write , stav tohoto pole není serializován.