Update februari 2021
Blijkbaar ondersteunt EF Core nu ulong
-- zie het antwoord van @JimbobTheSailor hieronder.
Oudere Entity Framework-versies:
Blijkt dat Entity Framework geen ondersteuning biedt voor unsigned
gegevens typen. Voor uint
kolommen, zou men de waarde gewoon kunnen opslaan in een ondertekend gegevenstype met een groter bereik (dat wil zeggen, een long
). Hoe zit het met ulong
kolommen? De algemene oplossing kon voor mij niet werken omdat er geen door EF ondersteund ondertekend gegevenstype is dat een ulong
kan bevatten zonder over te lopen.
Na een beetje nadenken, bedacht ik een eenvoudige oplossing voor dit probleem:sla de gegevens gewoon op in de ondersteunde long
typ en cast het naar ulong
wanneer benaderd. Je denkt misschien:"Maar wacht, de maximale waarde van ulong> de maximale waarde van long!" Je kunt de bytes van een ulong nog steeds in een long opslaan en deze vervolgens terug naar ulong casten wanneer je hem nodig hebt, aangezien beide 8 bytes hebben. Hiermee kunt u een ulong-variabele opslaan in een 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;
}
}
}
De casting is unchecked
om overloopuitzonderingen te voorkomen.
Ik hoop dat dit iemand helpt.