Format 列舉
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
由 SqlUserDefinedTypeAttribute 和 SqlUserDefinedAggregateAttribute 使用,以指示使用者定義型別 (UDT) 或彙總 (Aggregate) 的序列化 (Serialization) 格式。
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
{
備註
這個列舉是由 SqlUserDefinedTypeAttribute 和 SqlUserDefinedAggregateAttribute 用來指出使用者定義型別的串行化格式, (UDT) 或匯總。 使用 Native
和 UserDefined
列舉成員具有特殊需求。
Format.Native
格式的需求Format.Native
如下:StructLayoutAttribute如果 Value 其定義在類別中,而不是 結構,則具有的屬性值LayoutKind.Sequential必須套用至匯總或 UDT。 這會控制數據欄位的實體配置,並用來強制依其出現的順序依序配置成員。 SQL Server 使用這個屬性來判斷具有多個字段的 UDT 字段順序。
類型必須包含至少一個成員, (串行化值的大小不能是零位元組) 。
匯總的所有欄位都必須 是 blittable;也就是說,它們必須在Managed和Unmanaged記憶體中具有通用表示法,而且不需要Interop封送處理器的特殊處理。
UDT 的所有欄位都應該是下列其中一種可串行化的型別:
bool
、、sbyte
SqlInt64SqlInt16SqlInt32SqlByteshort
byte
SqlMoneySqlDoubleushort
int
SqlDateTimelong
double
ulong
uint
float
SqlSingle,或包含這些類型之字段的使用者所定義的其他實值型別。匯總不得指定的值
MaxByteSize
。匯總不得有任何 [非串行化] 字段。
欄位不得標示為具有) 的 明確版面設定 (StructLayoutAttribute.ValueLayoutKind.Explicit 。
Format.UserDefined
格式的需求Format.UserDefined
如下:匯總必須指定的值
MaxByteSize
。SqlUserDefinedTypeAttribute.IsByteOrdered指定屬性屬性。 預設值是
false
。如果您省略 或 IBinarySerialize.Write 方法中的任何IBinarySerialize.Read字段,該欄位的狀態不會串行化。