Perbarui Feb 2021
Rupanya EF Core sekarang mendukung ulong
-- lihat jawaban @JimbobTheSailor di bawah.
Versi Kerangka Entitas Lama:
Ternyata Entity Framework tidak mendukung unsigned
tipe data. Untuk uint
kolom, seseorang bisa saja menyimpan nilai dalam tipe data yang ditandatangani dengan rentang yang lebih besar (yaitu, long
). Bagaimana dengan ulong
kolom? Solusi umum tidak dapat bekerja untuk saya karena tidak ada tipe data bertanda yang didukung EF yang dapat menampung ulong
tanpa meluap.
Setelah sedikit berpikir, saya menemukan solusi sederhana untuk masalah ini:simpan saja data di long
yang didukung ketik dan masukkan ke ulong
saat diakses. Anda mungkin berpikir:"Tapi tunggu, nilai maksimal ulong> nilai maksimal long!" Anda masih dapat menyimpan byte ulong dalam waktu lama dan kemudian mengembalikannya ke ulong saat Anda membutuhkannya, karena keduanya memiliki 8 byte. Ini akan memungkinkan Anda untuk menyimpan variabel ulong ke database melalui EF.
// Avoid modifying the following directly.
// Used as a database column only.
public long __MyVariable { get; set; }
// Access/modify this variable instead.
// Tell EF not to map this field to a Db table
[NotMapped]
public ulong MyVariable
{
get
{
unchecked
{
return (ulong)__MyVariable;
}
}
set
{
unchecked
{
__MyVariable = (long)value;
}
}
}
Castingnya unchecked
untuk mencegah pengecualian yang berlebihan.
Semoga ini bisa membantu seseorang.