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
{
備註
這個列舉是由 和 SqlUserDefinedAggregateAttribute 用來 SqlUserDefinedTypeAttribute 指出使用者定義型別的序列化格式, (UDT) 或匯總。 Native
使用 和 UserDefined
列舉成員具有特殊需求。
Format.Native
格式的需求Format.Native
如下:StructLayoutAttribute如果 屬性值是在 類別中定義,而不是 結構,則必須將 具有 Value 屬性值 LayoutKind.Sequential 的 套用至匯總或 UDT。 這會控制資料欄位的實體配置,並用來強制依成員出現的順序順序排列成員。 SQL Server使用此屬性來判斷具有多個欄位之 UDT 的欄位順序。
類型必須包含至少一個成員, (序列化值不能是大小為零的位元組) 。
匯總的所有欄位都必須 是 blittable;也就是說,它們必須在 Managed 和 Unmanaged 記憶體中具有通用標記法,而且不需要 Interop 封送處理器的特殊處理。
UDT 的所有欄位都應該是下列其中一種可序列化的型別:
bool
、byte
、sbyte
ushort
short
int
、uint
、long
、 SqlDateTimeSqlInt64SqlSingleSqlDoubleulong
double
SqlMoneyfloat
SqlByteSqlInt16SqlInt32 ,或包含這些類型欄位的使用者所定義的其他實值型別。匯總不得指定 的值
MaxByteSize
。匯總不得有任何 [非序列化] 欄位。
欄位不得標示為具有) 的 明確版面配置 (StructLayoutAttribute.ValueLayoutKind.Explicit 。
Format.UserDefined
格式的需求Format.UserDefined
如下:匯總必須指定 的值
MaxByteSize
。SqlUserDefinedTypeAttribute.IsByteOrdered指定屬性屬性。 預設值是
false
。如果您省略 或 IBinarySerialize.Write 方法中的任何 IBinarySerialize.Read 欄位,該欄位的狀態就不會序列化。