Format 列挙型
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
SqlUserDefinedTypeAttribute および SqlUserDefinedAggregateAttribute がユーザー定義型 (UDT) または集計のシリアル化形式を指定するときに使用します。
public enum class Format
public enum Format
type Format =
Public Enum Format
- 継承
-
Format
フィールド
Native | 1 | このシリアル化形式には、SQL Server が UDT 表現をディスク上に効率よく格納できるようにする、きわめてシンプルなアルゴリズムが使用されています。 |
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プロパティ値が Value の LayoutKind.Sequential を持つ は、構造体ではなくクラスで定義されている場合は、集計または UDT に適用する必要があります。 これにより、データ フィールドの物理的なレイアウトが制御され、メンバーが表示される順序で順番にレイアウトされるように強制するために使用されます。 SQL Serverでは、この属性を使用して、複数のフィールドを持つ UDT のフィールド順序を決定します。
型には、少なくとも 1 つのメンバーが含まれている必要があります (シリアル化された値のサイズを 0 バイトにすることはできません)。
集計のすべてのフィールドは blittable である必要があります。つまり、マネージド メモリとアンマネージド メモリの両方で共通の表現が必要であり、相互運用マーシャラーによる特別な処理は必要ありません。
UDT のすべてのフィールドは、シリアル化できる次のいずれかの型である必要があります。
bool
short
sbyte
byte
、、ushort
、、float
double
ulong
SqlBytelong
SqlInt16SqlInt32uint
int
SqlDateTimeSqlSingleSqlInt64SqlDouble、SqlMoneyまたはこれらの型のいずれかのフィールドを含むユーザーによって定義されたその他の値型。集計で の
MaxByteSize
値を指定することはできません。集計に [非]フィールドを含めてはいけません。
フィールドは、明示的なレイアウトとしてマークしないでください (の をStructLayoutAttribute.ValueLayoutKind.Explicit使用)。
Format.UserDefined
形式のFormat.UserDefined
要件は次のとおりです。集計では、 の値を指定する
MaxByteSize
必要があります。属性プロパティを指定します SqlUserDefinedTypeAttribute.IsByteOrdered 。 既定値は
false
です。メソッドまたは IBinarySerialize.Write メソッドのIBinarySerialize.Readフィールドを省略した場合、そのフィールドの状態はシリアル化されません。