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 formát serializace 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 poskytuje vývojáři úplnou kontrolu nad binárním formátem prostřednictvím Write(BinaryWriter) metod a Read(BinaryReader) . |
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 používá 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. Řídí fyzické rozložení datových polí a slouží k vynucení postupného rozložení členů v pořadí, v jakém se zobrazí. SQL Server tento atribut používá 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 blikovatelná; to znamená, že musí mít společnou reprezentaci ve spravované i nespravované paměti a nevyžadují zvláštní zpracování ze strany zařazování zprostředkovatele komunikace.
Všechna pole UDT by měla mít jeden z následujících typů, které lze serializovat: , , ,
short
sbyte
uint
int
long
ulong
ushort
,float
, SqlInt32SqlInt64SqlDateTimeSqlDoubleSqlMoneySqlByteSqlSingledouble
SqlInt16nebo jiné typy hodnot 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í zadat 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.