Format Wyliczenie
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Używany przez SqlUserDefinedTypeAttribute i SqlUserDefinedAggregateAttribute do wskazywania formatu serializacji typu zdefiniowanego przez użytkownika (UDT) lub agregacji.
public enum class Format
public enum Format
type Format =
Public Enum Format
- Dziedziczenie
-
Format
Pola
Native | 1 | Ten format serializacji używa bardzo prostego algorytmu, który umożliwia SQL Server przechowywanie wydajnej reprezentacji udT na dysku. Typy oznaczone do |
Unknown | 0 | Format serializacji jest nieznany. |
UserDefined | 2 | Ten format serializacji zapewnia deweloperowi pełną kontrolę nad formatem binarnym za pomocą Write(BinaryWriter) metod i Read(BinaryReader) . |
Przykłady
W poniższym przykładzie przedstawiono UserDefinedType
atrybut punktu UDT. Funkcja UDT jest uporządkowana bajtowo, ma nazwę "Point", ma metodę weryfikacji o nazwie "ValidatePoint" i używa natywnego formatu serializacji.
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
{
Uwagi
Ta wyliczenie jest używana przez SqlUserDefinedTypeAttribute program i SqlUserDefinedAggregateAttribute wskazuje format serializacji typu zdefiniowanego przez użytkownika (UDT) lub agregacji. Użycie elementów Native
członkowskich i UserDefined
wyliczenia ma specjalne wymagania.
Format.Native
Wymagania dotycząceFormat.Native
formatu to:Wartość StructLayoutAttribute z właściwością ValueLayoutKind.Sequential musi być stosowana do agregacji lub udT, jeśli jest ona zdefiniowana w klasie, a nie do struktury. Steruje to fizycznym układem pól danych i służy do wymuszania sekwencjonowania elementów członkowskich w kolejności ich wyświetlania. SQL Server używa tego atrybutu do określenia kolejności pól dla tras zdefiniowanych przez użytkownika z wieloma polami.
Typ musi zawierać co najmniej jeden element członkowski (zserowane wartości nie mogą być zerowe w rozmiarze).
Wszystkie pola agregacji muszą być blittable; oznacza to, że muszą mieć wspólną reprezentację zarówno w pamięci zarządzanej, jak i niezarządzanej, a nie wymagają specjalnej obsługi przez marszałka międzyoperacyjnej.
Wszystkie pola udT powinny być jednym z następujących typów, które mogą być serializowane:
bool
, ,byte
, SqlDateTimeulong
long
float
SqlInt32SqlInt16SqlInt64SqlByteSqlSingleSqlDoublesbyte
ushort
SqlMoneyshort
int
uint
double
lub inne typy wartości zdefiniowane przez użytkownika zawierające pola jednego z tych typów.Agregacja nie może określać wartości dla
MaxByteSize
elementu .Agregacja nie może zawierać żadnych pól [niezwiązanych z danymi].
Pola nie mogą być oznaczone jako układ jawny (z znakiem StructLayoutAttribute.ValueLayoutKind.Explicit).
Format.UserDefined
Wymagania dotycząceFormat.UserDefined
formatu to:Agregacja musi określać wartość elementu
MaxByteSize
.Określ właściwość atrybutu SqlUserDefinedTypeAttribute.IsByteOrdered . Wartość domyślna to
false
.Jeśli pominięto jakiekolwiek pole w IBinarySerialize.Read metodach lub IBinarySerialize.Write , stan tego pola nie jest serializowany.