Sdílet prostřednictvím


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 formát serializace 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 jako členy pouze hodnotové typy (struktury v jazyce Microsoft Visual C# a struktury v jazyce Microsoft Visual Basic .NET). Členy referenčních typů (jako jsou 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 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ž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. Ří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: , , , shortsbyteuintintlongulongushort, float, SqlInt32SqlInt64SqlDateTimeSqlDoubleSqlMoneySqlByteSqlSingledoubleSqlInt16nebo jiné typy hodnot 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