J'écris une application web en utilisant ASP.net MVC, NPgsql et NHibernate avec PostgreSQL comme base de données (en utilisant VB ... pas mon choix).NHibernate, Npgsql, et le type inet
L'une des tables comporte deux colonnes de type inet. Dans le fichier de mappage, j'ai essayé de le mapper en tant que chaîne. Cela a vraiment bien fonctionné jusqu'à ce que je devais mettre à jour une rangée.
Je reçois un message d'erreur: "colonne "mycolumn" est de type iNet, mais l'expression est de type texte."
j'ai réalisé que Npgsql veut soit un objet IPAddress ou un objet NpgsqlInet. L'objet NpgsqlInet a un constructeur qui accepte une chaîne, donc j'ai essayé de créer un type d'utilisateur personnalisé suivant les instructions suivantes:
http://intellect.dk/post/Implementing-custom-types-in-nHibernate.aspx
Le get fonctionne très bien:
Public Function NullSafeGet(ByVal rs As System.Data.IDataReader, ByVal names() As String, ByVal owner As Object) As Object Implements NHibernate.UserTypes.IUserType.NullSafeGet
Dim ip As NpgsqlInet = New NpgsqlInet(CType(NHibernateUtil.String.NullSafeGet(rs, names(0)), String))
Return ip
End Function
Comme vous pouvez le voir, Je le tire de la base de données en tant que chaîne et l'utilise comme paramètre du constructeur.
Mais je suis coincé sur la méthode NullSafeSet. Je ne peux pas utiliser la méthode NHibernateUtil.String.NullSafeSet parce que Npgsql veut l'objet en tant que type NpgsqlInet.
Des idées?