次の方法で共有


Format 列挙型

定義

SqlUserDefinedTypeAttribute および SqlUserDefinedAggregateAttribute がユーザー定義型 (UDT) または集計のシリアル化形式を指定するときに使用します。

public enum class Format
public enum Format
type Format = 
Public Enum Format
継承
Format

フィールド

Native 1

このシリアル化形式には、SQL Server が UDT 表現をディスク上に効率よく格納できるようにする、きわめてシンプルなアルゴリズムが使用されています。 Native シリアル化の対象となる型には、値型 (Microsoft Visual C# の struct、Microsoft Visual Basic .NET の Structure) のみ、メンバーとして割り当てることができます。 参照型のメンバー (Visual C# や Visual Basic のクラスなど) は、ユーザー定義型であるか .NET クラス ライブラリに存在するもの (String など) であるかに関係なく、サポートされません。

Unknown 0

シリアル化形式は未知です。

UserDefined 2

このシリアル化形式を使用すると、開発者は、Write(BinaryWriter) および Read(BinaryReader) メソッドを通じてバイナリ形式を完全に制御できます。

次の例は、 UserDefinedType Point UDT の属性を示しています。 UDT はバイト順で、"Point" という名前で、"ValidatePoint" という名前の検証メソッドがあり、ネイティブシリアル化形式を使用します。

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 によって使用されSqlUserDefinedTypeAttribute、ユーザー定義型 (UDT) または集計のシリアル化形式を示します。 および UserDefined 列挙メンバーのNative使用には、特別な要件があります。

  • Format.Native 形式の Format.Native 要件は次のとおりです。

    • StructLayoutAttributeプロパティ値が ValueLayoutKind.Sequential を持つ は、構造体ではなくクラスで定義されている場合は、集計または UDT に適用する必要があります。 これにより、データ フィールドの物理的なレイアウトが制御され、メンバーが表示される順序で順番にレイアウトされるように強制するために使用されます。 SQL Serverでは、この属性を使用して、複数のフィールドを持つ UDT のフィールド順序を決定します。

    • 型には、少なくとも 1 つのメンバーが含まれている必要があります (シリアル化された値のサイズを 0 バイトにすることはできません)。

    • 集計のすべてのフィールドは blittable である必要があります。つまり、マネージド メモリとアンマネージド メモリの両方で共通の表現が必要であり、相互運用マーシャラーによる特別な処理は必要ありません。

    • UDT のすべてのフィールドは、シリアル化できる次のいずれかの型である必要があります。boolshortsbytebyte、、ushort、、floatdoubleulongSqlBytelongSqlInt16SqlInt32uintintSqlDateTimeSqlSingleSqlInt64SqlDoubleSqlMoneyまたはこれらの型のいずれかのフィールドを含むユーザーによって定義されたその他の値型。

    • 集計で の MaxByteSize値を指定することはできません。

    • 集計に [非]フィールドを含めてはいけません。

    • フィールドは、明示的なレイアウトとしてマークしないでください (の をStructLayoutAttribute.ValueLayoutKind.Explicit使用)。

  • Format.UserDefined 形式の Format.UserDefined 要件は次のとおりです。

適用対象