Format Enum
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Digunakan oleh SqlUserDefinedTypeAttribute dan SqlUserDefinedAggregateAttribute untuk menunjukkan format serialisasi jenis yang ditentukan pengguna (UDT) atau agregat.
public enum class Format
public enum Format
type Format =
Public Enum Format
- Warisan
-
Format
Bidang
Native | 1 | Format serialisasi ini menggunakan algoritma yang sangat sederhana yang memungkinkan SQL Server menyimpan representasi UDT yang efisien pada disk. Jenis yang ditandai untuk |
Unknown | 0 | Format serialisasi tidak diketahui. |
UserDefined | 2 | Format serialisasi ini memberi pengembang kontrol penuh atas format biner melalui Write(BinaryWriter) metode dan Read(BinaryReader) . |
Contoh
Contoh berikut menunjukkan UserDefinedType
atribut Point UDT. UDT diurutkan byte, diberi nama "Point", memiliki metode validasi bernama "ValidatePoint", dan menggunakan format serialisasi asli.
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
{
Keterangan
Enumerasi ini digunakan oleh SqlUserDefinedTypeAttribute dan SqlUserDefinedAggregateAttribute untuk menunjukkan format serialisasi jenis yang ditentukan pengguna (UDT) atau agregat. Penggunaan anggota Native
enumerasi dan UserDefined
memiliki persyaratan khusus.
Format.Native
Persyaratan untuk format tersebutFormat.Native
adalah:StructLayoutAttribute dengan Value nilai LayoutKind.Sequential properti harus diterapkan ke agregat atau UDT jika ditentukan dalam kelas dan bukan struktur. Ini mengontrol tata letak fisik bidang data dan digunakan untuk memaksa anggota ditata secara berurutan dalam urutan yang muncul. SQL Server menggunakan atribut ini untuk menentukan urutan bidang untuk UDT dengan beberapa bidang.
Jenis harus berisi setidaknya satu anggota (nilai berseri tidak boleh berukuran nol byte).
Semua bidang agregat harus dapat dibakar; artinya, mereka harus memiliki representasi umum dalam memori yang dikelola dan tidak dikelola dan tidak memerlukan penanganan khusus oleh interop marshaler.
Semua bidang UDT harus dari salah satu jenis berikut yang dapat diserialisasikan:
bool
, , , SqlInt16double
byte
int
uint
ushort
long
short
ulong
SqlInt64SqlBytefloat
sbyte
SqlDateTimeSqlSingleSqlInt32, SqlDouble, , SqlMoneyatau jenis nilai lain yang ditentukan oleh pengguna yang berisi bidang dari salah satu jenis ini.Agregat tidak boleh menentukan nilai untuk
MaxByteSize
.Agregat tidak boleh memiliki bidang [NonSerialized].
Bidang tidak boleh ditandai sebagai tata letak eksplisit (dengan StructLayoutAttribute.Value dari LayoutKind.Explicit).
Format.UserDefined
Persyaratan untuk format tersebutFormat.UserDefined
adalah:Agregat harus menentukan nilai untuk
MaxByteSize
.Tentukan SqlUserDefinedTypeAttribute.IsByteOrdered properti atribut. Nilai defaultnya adalah
false
.Jika Anda menghilangkan bidang apa pun dalam IBinarySerialize.Read metode atau IBinarySerialize.Write , status bidang tersebut tidak diserialisasikan.