Memetakan Integer Tidak Ditandatangani dan Long dalam Rangka Kerja Entiti
Pendekatan pertama kod Rangka Kerja Entiti menyediakan pemetaan sifat yang lancar ke lajur pangkalan data. Walau bagaimanapun, pembekal EF MySQL tidak menyokong jenis data ulong, menyebabkan pembangun tertanya-tanya bagaimana untuk memetakan sifat tersebut kepada bigint MySQL yang tidak ditandatangani.
Penyelesaian:
Secara tradisional , Rangka Kerja Entiti tidak mempunyai sokongan untuk jenis data yang tidak ditandatangani. Walau bagaimanapun, untuk lajur uint, pembangun boleh menyimpan nilai dalam jenis data bertandatangan julat yang lebih besar seperti panjang. Tetapi untuk lajur ulong, tiada jenis data bertandatangan yang disokong EF yang boleh menghalang limpahan.
Untuk menangani perkara ini, pembangun boleh memanfaatkan penyelesaian yang bijak: simpan data dalam lajur panjang dalam pangkalan data dan hantarkannya ke ulong apabila mengakses hartanah. Ini berfungsi kerana kedua-dua panjang dan ulong ialah jenis data 8-bait.
<code class="csharp">// As a database column only. Do not modify directly. public long __MyVariable { get; set; } // Access and modify this variable instead. [NotMapped] public ulong MyVariable { get { unchecked { return (ulong)__MyVariable; } } set { unchecked { __MyVariable = (long)value; } } }</code>
Nota: Casting tanpa tanda digunakan untuk mengelakkan pengecualian limpahan.
Penyelesaian ini membenarkan pembangun untuk menggunakan pembolehubah ulong dengan Rangka Kerja Entiti dengan berkesan, menyediakan penyelesaian untuk kekurangan sokongan asli untuk jenis data yang tidak ditandatangani.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memetakan Hartanah `ulong` ke Bigint Tidak Ditandatangani MySQL dalam Rangka Kerja Entiti?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!