Share via


Format Výčet

Definice

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 Native serializaci mohou mít pouze hodnotové typy (struktury v jazyce Microsoft Visual C# a struktury v jazyce Microsoft Visual Basic .NET) jako členy. Členy odkazových typů (například třídy v jazyce Visual C# a Visual Basic), buď uživatelem definované, nebo ty, které existují v knihovnách tříd .NET (například String), nejsou podporovány.

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žadavky Format.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: , , , shortlonguintintsbyteushort, ulong, floatdouble, SqlInt64SqlDateTimeSqlDoubleSqlMoneySqlInt16SqlSingleSqlByteSqlInt32nebo jiné hodnotové typy definované uživatelem, které obsahují pole jednoho z těchto typů. bytebool

    • 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žadavky Format.UserDefined :

Platí pro