Aktualizace z února 2021
EF Core nyní zjevně podporuje ulong
-- viz odpověď @JimbobTheSailor níže.
Starší verze Entity Framework:
Ukázalo se, že Entity Framework nepodporuje unsigned
typy dat. Pro uint
sloupců, stačí uložit hodnotu do podepsaného datového typu s větším rozsahem (tj. long
). A co ulong
sloupce? Společné řešení pro mě nemohlo fungovat, protože neexistuje žádný podepsaný datový typ podporovaný EF, který by mohl obsahovat ulong
bez přetečení.
Po chvíli přemýšlení jsem přišel na jednoduché řešení tohoto problému:stačí uložit data do podporovaného long
zadejte a odešlete do ulong
při přístupu. Možná si říkáte:"Ale počkej, maximální hodnota ulong> maximální hodnota long!" Stále můžete uložit bajty ulong do long a poté je přehodit zpět na ulong, když to budete potřebovat, protože oba mají 8 bajtů. To vám umožní uložit proměnnou ulong do databáze prostřednictvím 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;
}
}
}
Odesílání je unchecked
abyste zabránili výjimkám přetečení.
Doufám, že to někomu pomůže.