Format 열거형

정의

UDT(사용자 정의 형식)나 집계의 serialization 형식을 나타내는 SqlUserDefinedTypeAttributeSqlUserDefinedAggregateAttribute에 사용됩니다.

public enum class Format
public enum Format
type Format = 
Public Enum Format
상속
Format

필드

Native 1

이 serialization 형식은 SQL Server에서 UDT의 효율적인 표현을 디스크에 저장할 수 있는 매우 간단한 알고리즘을 사용합니다. Native serialization으로 표시된 형식은 값 형식(Microsoft Visual C#의 경우 구조체(struct), Microsoft Visual Basic .NET의 경우 구조체(structure))만 멤버로 가질 수 있습니다. 사용자가 정의하였거나 .NET 클래스 라이브러리(예: String)에 있는 참조 형식의 멤버(Visual C#과 Visual Basic의 경우 클래스)는 지원되지 않습니다.

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.SequentialStructLayoutAttribute 구조체가 아닌 클래스에 정의된 경우 집계 또는 UDT에 적용해야 합니다. 이렇게 하면 데이터 필드의 실제 레이아웃이 제어되며 멤버가 나타나는 순서대로 순차적으로 배치되도록 하는 데 사용됩니다. SQL Server 이 특성을 사용하여 여러 필드가 있는 UDT의 필드 순서를 결정합니다.

    • 형식에는 하나 이상의 멤버가 포함되어야 합니다(직렬화된 값은 크기가 0바이트일 수 없음).

    • 집계의 모든 필드는 Blittable이어야 합니다. 즉, 관리되는 메모리와 관리되지 않는 메모리 모두에 공통 표현이 있어야 하며 interop 마샬러의 특수 처리가 필요하지 않습니다.

    • UDT의 모든 필드는 직렬화bool할 수 있는 형식 중 하나여야 합니다. , , byte, SqlDateTimeulonglongfloatSqlInt32SqlInt16SqlInt64SqlByteSqlSingleSqlDoublesbyteushortSqlMoneyshortintuintdouble또는 이러한 형식 중 하나의 필드를 포함하는 사용자가 정의한 기타 값 형식입니다.

    • 집계는 에 대한 MaxByteSize값을 지정해서는 안됩니다.

    • 집계에 [비Serialized] 필드가 없어야 합니다.

    • 필드를 명시적 레이아웃으로 표시해서는 안 됩니다(의 LayoutKind.Explicit)StructLayoutAttribute.Value.

  • Format.UserDefined 형식에 대한 Format.UserDefined 요구 사항은 다음과 같습니다.

적용 대상