Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak używać niepodpisanych typów int/long z Entity Framework?

Aktualizacja luty 2021

Najwyraźniej EF Core obsługuje teraz ulong -- zobacz odpowiedź @JimbobTheSailor poniżej.

Starsze wersje Entity Framework:

Okazuje się, że Entity Framework nie obsługuje unsigned typy danych. Dla uint kolumn, można po prostu przechowywać wartość w podpisanym typie danych z większym zakresem (czyli long ). A co z ulong kolumny? Typowe rozwiązanie nie działało dla mnie, ponieważ nie ma obsługiwanego przez EF typu danych podpisanych, który mógłby przechowywać ulong bez przepełnienia.

Po krótkim zastanowieniu wymyśliłem proste rozwiązanie tego problemu:po prostu przechowuj dane w obsługiwanym long wpisz i prześlij go do ulong po uzyskaniu dostępu. Być może myślisz:„Ale czekaj, maksymalna wartość ulonga> maksymalna wartość longa!” Nadal możesz przechowywać bajty ulonga w long, a następnie rzutować go z powrotem do ulonga, gdy tego potrzebujesz, ponieważ oba mają 8 bajtów. Umożliwi to zapisanie zmiennej ulonga w bazie danych za pomocą 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;
        }
    }
}

Przesyłanie jest unchecked aby zapobiec wyjątkom przepełnienia.

Mam nadzieję, że to komuś pomoże.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nie można uzyskać wiosennego rozruchu, aby automatycznie utworzyć schemat bazy danych

  2. Cytat pojedynczy, cytat podwójny i znaki wsteczne w zapytaniach MySQL

  3. Jak uzyskać pierwszy dzień każdego miesiąca w mysql?

  4. Prosty sposób na obliczenie mediany za pomocą MySQL

  5. Monitorowanie baz danych za pomocą MySQL Enterprise Monitor