Bagaimana untuk Memetakan Hartanah `ulong` kepada BigInts Tidak Ditandatangani dalam MySQL dengan Rangka Kerja Entiti?

Mary-Kate Olsen
Lepaskan: 2024-11-03 04:09:02
asal
1022 orang telah melayarinya

How to Map `ulong` Properties to Unsigned BigInts in MySQL with Entity Framework?

Jenis "uint" dan "ulong" dalam Rangka Kerja Entiti

Dalam Rangka Kerja Entiti, atribut kelas menggunakan jenis data panjang boleh menjadi Pemetaan adalah betul apabila menambah migrasi baharu (kod-didahulukan), tetapi pembekal EF untuk mysql melangkau jenis data ulong. Bagaimanakah cara saya memetakan harta kepada bigint mysql yang tidak ditandatangani?

Dikemas kini (Februari 2021)

Nampaknya EF Core kini menyokong ulong - lihat jawapan @JimbobTheSailor di bawah.

Versi Rangka Kerja Entiti Lama:

Ternyata Rangka Kerja Entiti tidak menyokong jenis data yang tidak ditandatangani. Untuk lajur uint, nilai boleh disimpan dalam jenis data bertanda yang lebih besar (iaitu panjang). Bagaimana dengan lajur ulong? Penyelesaian generik tidak berfungsi untuk saya kerana ia tidak mempunyai jenis data bertanda yang disokong oleh EF yang cukup besar untuk memegang ulong tanpa melimpah.

Setelah berfikir sejenak, saya menemui penyelesaian mudah untuk masalah ini: simpan sahaja data dalam jenis panjang yang disokong dan tukarkannya kepada ulong apabila diakses. Anda mungkin berfikir: "Tunggu, nilai maksimum ulong > nilai maksimum panjang Anda masih boleh menyimpan bait ulong dalam panjang dan kemudian menukarnya semula kepada ulong apabila diperlukan, kerana kedua-duanya Terdapat 8 bait. Ini akan membolehkan anda menyimpan pembolehubah ulong ke pangkalan data melalui EF.

<code class="csharp">// 避免直接修改以下内容。
// 仅用作数据库列。
public long __MyVariable { get; set; }

// 访问/修改此变量。
// 告诉 EF 不要将此字段映射到数据库表
[NotMapped]
public ulong MyVariable
{
    get
    {
        unchecked
        {
            return (ulong)__MyVariable;
        }
    }

    set
    {
        unchecked
        {
            __MyVariable = (long)value;
        }
    }
}</code>
Salin selepas log masuk

Akan menghalang pengecualian limpahan jika penukaran tidak disemak.

Semoga ini membantu.

Atas ialah kandungan terperinci Bagaimana untuk Memetakan Hartanah `ulong` kepada BigInts Tidak Ditandatangani dalam MySQL dengan Rangka Kerja Entiti?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan