Format 열거형
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
UDT(사용자 정의 형식)나 집계의 serialization 형식을 나타내는 SqlUserDefinedTypeAttribute 및 SqlUserDefinedAggregateAttribute에 사용됩니다.
public enum class Format
public enum Format
type Format =
Public Enum Format
- 상속
-
Format
필드
Native | 1 | 이 serialization 형식은 SQL Server에서 UDT의 효율적인 표현을 디스크에 저장할 수 있는 매우 간단한 알고리즘을 사용합니다. |
Unknown | 0 | serialization 형식을 알 수 없습니다. |
UserDefined | 2 | 이 serialization 형식은 Write(BinaryWriter) 및 Read(BinaryReader) 메서드를 통해 이진 형식을 완전히 제어할 수 있는 권한을 개발자에게 제공합니다. |
예제
다음 예제에서는 Point UDT의 특성을 보여줍니다 UserDefinedType
. UDT는 바이트 순서로 지정되고, 이름은 "Point"이며, "ValidatePoint"라는 유효성 검사 메서드를 사용하며 네이티브 serialization 형식을 사용합니다.
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
{
설명
이 열거형은 및 SqlUserDefinedAggregateAttribute 에서 UDT(사용자 정의 형식) 또는 집계의 serialization 형식을 나타내는 데 사용됩니다SqlUserDefinedTypeAttribute. 및 UserDefined
열거형 멤버의 Native
사용에는 특별한 요구 사항이 있습니다.
Format.Native
형식에 대한Format.Native
요구 사항은 다음과 같습니다.속성 값이 인 ValueLayoutKind.Sequential 은 StructLayoutAttribute 구조체가 아닌 클래스에 정의된 경우 집계 또는 UDT에 적용해야 합니다. 이렇게 하면 데이터 필드의 실제 레이아웃이 제어되며 멤버가 나타나는 순서대로 순차적으로 배치되도록 하는 데 사용됩니다. SQL Server 이 특성을 사용하여 여러 필드가 있는 UDT의 필드 순서를 결정합니다.
형식에는 하나 이상의 멤버가 포함되어야 합니다(직렬화된 값은 크기가 0바이트일 수 없음).
집계의 모든 필드는 Blittable이어야 합니다. 즉, 관리되는 메모리와 관리되지 않는 메모리 모두에 공통 표현이 있어야 하며 interop 마샬러의 특수 처리가 필요하지 않습니다.
UDT의 모든 필드는 직렬화
bool
할 수 있는 형식 중 하나여야 합니다. , ,byte
, SqlDateTimeulong
long
float
SqlInt32SqlInt16SqlInt64SqlByteSqlSingleSqlDoublesbyte
ushort
SqlMoneyshort
int
uint
double
또는 이러한 형식 중 하나의 필드를 포함하는 사용자가 정의한 기타 값 형식입니다.집계는 에 대한
MaxByteSize
값을 지정해서는 안됩니다.집계에 [비Serialized] 필드가 없어야 합니다.
필드를 명시적 레이아웃으로 표시해서는 안 됩니다(의 LayoutKind.Explicit)StructLayoutAttribute.Value.
Format.UserDefined
형식에 대한Format.UserDefined
요구 사항은 다음과 같습니다.집계는 에 대한
MaxByteSize
값을 지정해야 합니다.SqlUserDefinedTypeAttribute.IsByteOrdered 특성 속성을 지정합니다. 기본값은
false
입니다.또는 IBinarySerialize.Write 메서드의 IBinarySerialize.Read 필드를 생략하면 해당 필드의 상태가 serialize되지 않습니다.