Le proprietà della classe con il tipo di dati long
vengono mappate correttamente quando si aggiunge una nuova migrazione (prima del codice), ma i tipi di dati ulong
vengono ignorati dal provider EF di mysql. Come si fa a mappare una proprietà per usare mysql's unsigned bigint
?Come utilizzare i tipi int/long senza segno con Entity Framework?
risposta
Si scopre che Entity Framework non supporta i tipi di dati unsigned
. Per le colonne uint
, è possibile solo memorizzare il valore in un tipo di dati firmato con un intervallo più ampio (ovvero, long
). Che dire delle colonne ulong
? La soluzione comune potrebbe non funzionare perché non esiste un tipo di dati firmato supportato da EF che possa contenere uno ulong
senza overflow.
Dopo un po 'di riflessione, ho trovato una soluzione semplice a questo problema: è sufficiente memorizzare i dati nel tipo supportato long
e trasferirli su ulong
quando si accede. Potresti pensare: "Ma aspetta, il valore massimo di ulong> il valore massimo di long!" È ancora possibile memorizzare i byte di un ulong in un lungo e quindi restituirlo a ulong quando ne hai bisogno, dal momento che entrambi hanno 8 byte. Ciò consentirà di salvare una variabile ulong in un database tramite 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;
}
}
}
Il casting è unchecked
per impedire le eccezioni di overflow.
Spero che questo aiuti qualcuno.
- 1. Cosa sono i tipi complessi nel contesto con Entity Framework
- 2. Entity Framework senza transazione?
- 3. Entity Framework senza database
- 4. Come utilizzare ASP.NET Identity 3.0 senza Entity Framework
- 5. Moltiplicazione con segno e senza segno
- 6. Entity Framework e anonimi Tipi in F #
- 7. Come ottenere Entity Framework 4.2 senza Nuget?
- 8. Come utilizzare Entity Framework + PostgreSQL dalla connessione?
- 9. WebAPI odata senza Entity Framework
- 10. Come confrontare solo Data senza ora nei tipi DateTime in Linq a SQL con Entity Framework?
- 11. Asp.net Web API senza alcun Entity Framework
- 12. Utilizzo di Breeze.js senza Entity Framework
- 13. Come utilizzare Iniezione delle dipendenze con Entity Framework DbContext?
- 14. Entity Framework Code Prima senza app.config
- 15. Come utilizzare un enum esistente con DB Entity Framework First
- 16. Entity Framework con i trigger invece di
- 17. Utilizzare i componenti di Zend Framework senza il framework effettivo?
- 18. Unicode con Entity Framework
- 19. autoreferenziale con Entity Framework
- 20. QVariant firmato/i confronti senza segno
- 21. SQLite con Entity Framework
- 22. Entity Framework con parametri facoltativi?
- 23. Come mixare Entity Framework con Web API
- 24. Entity Framework 3.5 - Come caricare i bambini
- 25. Entity Framework: Quando utilizzare Set <>
- 26. Tentativo di utilizzare un generico con Entity Framework
- 27. Come utilizzare il framework di entità con i dati gerarchici?
- 28. Come risolvere i conflitti di confronto con Entity Framework?
- 29. Dovrei utilizzare un repository generico con Entity Framework 5?
- 30. Migliorare l'efficienza con Entity Framework
Potete per favore dare un'occhiata a http://stackoverflow.com/questions/41802581/entity-framework-code-first-with-mysqlconnector-pks-and-fks-set-as-uint? – NetUser101
Cosa succede se si sta tentando di lavorare con numeri più lunghi di un lungo? –