sql >> Database teknologi >  >> RDS >> Mysql

Hvordan bruger man usignerede int/lange typer med Entity Framework?

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.



  1. SQL Server 2017 Trin for trin installation -2

  2. Hvordan overfører jeg Java List of Objects til Oracle Stored Procedure ved hjælp af MyBatis?

  3. Fejl ved push af data til Heroku:tidszoneforskydning uden for rækkevidde

  4. Pivotering af data ved hjælp af to kolonner