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.