Opdatering februar 2021
Tilsyneladende understøtter EF Core nu ulong
-- se @JimbobTheSailors svar nedenfor.
Ældre Entity Framework-versioner:
Det viser sig, at Entity Framework ikke understøtter unsigned
datatyper. Til uint
kolonner, kunne man bare gemme værdien i en signeret datatype med et større interval (det vil sige en long
). Hvad med ulong
kolonner? Den fælles løsning kunne ikke fungere for mig, fordi der ikke er nogen EF-understøttet signeret datatype, der kan indeholde en ulong
uden at flyde over.
Efter lidt overvejelse fandt jeg ud af en simpel løsning på dette problem:gem blot dataene i den understøttede long
skriv og cast det til ulong
når de tilgås. Du tænker måske:"Men vent, ulongs maxværdi> longs maxværdi!" Du kan stadig gemme bytes af en ulong i en long og derefter caste den tilbage til ulong, når du har brug for den, da begge har 8 bytes. Dette vil tillade dig at gemme en ulang variabel i en database via 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;
}
}
}
Castingen er unchecked
for at forhindre overløbsundtagelser.
Håber dette hjælper nogen.