Les types "uint" et "ulong" dans Entity Framework
Dans Entity Framework, les attributs de classe utilisant le type de données long peuvent être le mappage est correct lors de l'ajout d'une nouvelle migration (code d'abord), mais le fournisseur EF pour MySQL ignore le type de données ulong. Comment mapper une propriété au bigint non signé de MySQL ?
Mise à jour (février 2021)
Apparemment, EF Core prend désormais en charge les ulongs - voir la réponse de @JimbobTheSailor ci-dessous.
Anciennes versions d'Entity Framework :
Il s'avère qu'Entity Framework ne prend pas en charge les types de données non signés. Pour les colonnes uint, la valeur peut être stockée dans un type de données signé plus grand (c'est-à-dire long). Qu'en est-il des colonnes ulong ? La solution générique ne fonctionne pas pour moi car elle n'a pas de type de données signé pris en charge par EF qui soit suffisamment grand pour contenir un ulong sans déborder.
Après avoir réfléchi un moment, j'ai trouvé une solution simple à ce problème : il suffit de stocker les données dans un type long pris en charge et de les convertir en ulong lors de l'accès. Vous pensez peut-être : "Attendez, la valeur maximale d'un ulong > la valeur maximale d'un long !" Vous pouvez toujours stocker les octets de l'ulong dans un long, puis le reconvertir en ulong si nécessaire, car il y en a tous les deux 8. octets. Cela vous permettra de sauvegarder les variables ulong dans la base de données via EF.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
|
Empêchera les exceptions de débordement si la conversion n'est pas cochée.
J'espère que cela vous aidera.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!