2008-09-25 10 views
1

Est-ce que quelqu'un a essayé le ActiveRecord Intro Sample avec C# 3.5? J'ai en quelque sorte le sentiment que l'échantillon est complètement faux ou simplement obsolète. La configuration XML est erroné tout simplement:Tutoriel Castle-ActiveRecord avec .NET 3.5 cassé?

<add key="connection.connection_string" value="xxx" /> 

devrait être:

<add key="hibernate.connection.connection_string" value="xxx" /> 

(si je comprends la syntaxe de configuration NHibernate droit ..)

Je me demande ce que je fais mal . Je reçois une exception "Impossible d'exécuter ExecuteQuery for User" lors de l'appel de Count() sur le modèle utilisateur.

Aucune idée de ce que cela peut être. La source du tutoriel diffère fortement de la source sur la page (notamment dans la configuration XML), et c'est un échantillon VS2003 avec une syntaxe différente sur la plupart des choses (pas de génériques, etc.).

Des suggestions? ActiveRecord est génial ..

Répondre

1

(ce qui était trop long pour un poste de commentaire)

[@Tigraine] De vos commentaires sur ma réponse précédente, il semble que l'erreur ne réside pas dans la configuration, mais avec un de vos entités. En supprimant le "hibernate", vous avez corrigé la configuration afin qu'elle vous envoie l'erreur réelle, ce qui semble être que l'entité "Post" n'est pas correctement attribuée à ActiveRecord pour créer son mapping.

Si vous échouez plus bas dans l'erreur qu'il donne, il a probablement quelques détails sur ce que "Post" a échoué.

Certaines choses communes comprennent:

  • La classe ne possède pas l'attribut [ActiveRecord].
  • Il n'y a pas de propriété avec l'attribut [PrimaryKey].
  • Il n'y a pas de table correspondante appelée "Post" (ou "Posts" si PluralizeTableNames est "true").
  • Il n'y a pas de colonne correspondante pour les propriétés attribuées.
  • Vos propriétés et méthodes publiques attribuées ne sont pas virtual (celle-ci me tue tout le temps).
+0

Merci, bonne réponse! Je vais essayer cela dès que possible :) – Tigraine

+0

Peut-être que j'ai une ancienne version. Mais mes clés de configuration DOIVENT commencer par hibernate.XX. Je pourrais le faire fonctionner maintenant. encore la config dans le tutoriel est faux (pour moi) – Tigraine

+0

On dirait une version plus ancienne. Au moins, vous avez des choses qui fonctionnent. C'est bon à entendre! – Gilligan

0

Supprimez la partie "hibernate." pour toutes les entrées de configuration. Votre premier exemple est le bon.

+0

Cela conduit alors à l'erreur suivante: «Erreur d'ajout d'informations de la classe ActiveRecord.Post à NHibernate Vérifier l'exception interne pour plus d'informations » Tant que la mise en veille prolongée. partie est dans la config, je peux au moins appeler ActiveRecordStarter.Initialize() sans exceptions – Tigraine

+0

Odd. Je voudrais vérifier l'une des deux choses, alors: 1) quelle version d'ActiveRecord utilisez-vous? 2) Y a-t-il une faute de frappe ou une clé manquante dans votre fichier de configuration? – Gilligan

+0

Je viens de commencer en téléchargeant les dernières versions de la page Castle.ActiveRecord il y a une heure. Et a obtenu leur échantillon .. c'est ce que j'ai installé: http://www.castleproject.org/castle/download.html – Tigraine

1

La partie 'hibernate' de la clé a été supprimée dans NHibernate version 2.0. Cette version est correcte pour NHibernate 2.0 partir:

<add key="connection.connection_string" value="xxx" /> 

Edit: Je vois que le QuickStart ne vient pas avec les binaires pour le château et NHibernate. Vous devez avoir téléchargé les binaires de quelque part; il serait utile si vous pouviez fournir le numéro de version de votre fichier NHibernate.dll. Confondemment, au moins QUELQU'UN du quickstart a été mis à jour pour être en cours avec NHibernate (NH) 2.0, mais la dernière version de Castle 'correcte' est toujours la 1.0 RC3 (presque un an maintenant), qui n'inclut pas NH 2.0.

Vous pouvez faire deux choses. Vous pouvez continuer à utiliser Castle RC3 et dans ce cas, vous devrez en effet ajouter le préfixe 'hibernate' à vos entrées de configuration. Ou vous pouvez télécharger un build de Castle du coffre, qui devrait fonctionner contre NH 2.0. Le problème avec cette dernière approche est que certains des autres changements de rupture introduits dans NH 2.0 pourraient ne pas être corrigés dans le démarrage rapide.