L'utilisation de la colonne Guid as Id dans NHibernate provoque une exception de format lors de l'utilisation de MySQL

StackOverflow https://stackoverflow.com/questions/1034879

  •  07-07-2019
  •  | 
  •  

Question

Lorsque je définis l'entité / le mappage NHibernate pour utiliser Guid en tant que colonne d'identité, je reçois une exception. La colonne Guid est générée sous forme de varchar (40), mais le contenu semble être binaire.

Y at-il une solution à cela? Pour le moment, j'utilise simplement plain ol 'int, mais ce serait bien de le savoir pour des projets futurs! :)

Était-ce utile?

La solution

La documentation du connecteur MySql indique que, à partir de la version 5.2 du connecteur .NET, ils traitent les GUID comme des BINARY (16) et non des VARCHAR (40) .

  

Etant donné que le dialecte MySQL actuel dans nhibernate n'est pas mis à jour pour refléter ce changement (en réalité, un numéro est préparé)   vous devez les convertir manuellement   champs à BINARY (16) après nhibernate   générer le schéma.

Autres conseils

Une autre mise à jour est que les derniers connecteurs utilisent Char (36)

Cette option a été introduite dans Connector / NET 6.1.1. La représentation dorsale d'un type GUID a été modifiée de BINARY (16) à CHAR (36). Cela a été fait pour permettre aux développeurs d'utiliser la fonction serveur UUID () pour renseigner une table GUID - UUID () génère une chaîne de 36 caractères. Les développeurs d’applications plus anciennes peuvent ajouter «Old Guids = true» à la chaîne de connexion afin d’utiliser un GUID de type de données BINARY (16).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top