vendredi 12 décembre 2014

Telerik : No primary key fields found for class

Voici donc un message d'erreur obtenu lors de l'exécution d'une requête Lync sur une de mes tables gérées à travers DataAccess ORM de Telerik (anciennement OpenAccess).

A en croire ce message je n'ai pas de clef définie sur cette table. Et pourtant... dans le model, j'ai bien une clef de défini. Pour remédier à ce soucis, j'ai dû supprimer la clef, puis enregistrer mes modifications, j'ai eu droits à quelques messages d'erreur correspondant aux FOREIGN KEY qui ne pouvait plus se résoudre. J'ai remis en place ma clef, resauvegarder, puis exécuter l'application et... problème résolu.

Pour supprimer/créer la clef j'ai juste passé de false à true le propriété Identity de mon champ clef.

ClickOnce

Pas grande chose à voir avec DotNetNuke (sujet principal de ce blog). Mais voici une problématique face à laquelle je me suis retrouvé et qui m'a donné quelques sueurs froides : le renouvellement d'un certificat d'une application ClickOnce.

Lors de la création d'une application ClickOnce, les manifestes sont automatiquement signés. En effet, la case à cocher "Signer les manifestes ClickOnce" se trouvant dans l'onglet "Signature" des propriétés du projet est pré-coché. Cela ne pose aucune problème jusqu'à la date de péremption du certificat c'est à dire 1 an après la première publication.

Après que se passe-t-il ? Plusieurs possibilités :
  • vous créez un nouveau certificat, cela induit que vous acceptiez que vos utilisateurs doivent supprimer votre ancienne version pour installer la nouvelle... pas vraiment pratique,
  • vous avez sous le coude le certificat (fichier .pfx) qui a été créé initialement, et là vous n'avez plus qu'à le prolonger et redéployer et c'est reparti pour un tour,
  • vous n'avez pas le certificat, et là vous pouvez soit pleurer, soit accepter "contraint et forcer" la première solution.
Nous allons nous pencher sur la meilleure des solutions : renouvellement du certificat.

Pour info le certificat généré initialement, se trouve normalement à la racine de votre projet.

Voici l'article que vous permettra de procéder au renouvellement du certificat : http://robindotnet.wordpress.com/2010/01/26/how-to-extend-an-existing-certificate-even-if-it-has-expired/

Pour résumé, il vous faut dans un premier temps récupérer un exécutable permettant de renouveler le certificat, celui-ci a pour nom "renewcert.exe".

Ensuite, exécuter la ligne de commande suivante :
renewcert <FichierPfxOrigine> <FichierPfxDestination>.

Vous obtiendrez alors un fichier certificat pfx dont la date aura été étendue de 5 ans. Il ne vous reste plus qu' remplacer votre ancien certificat en passant par les propriétés du projet onglet "Signature" puis le bouton"A partir d'un fichier...".

Problème réglé.